Monday, March 9, 2009

Self-referential sentence solution

OK, here's the sentence:

This sentence has seven hundred and seventeen letters, one hundred and fifty-six words, forty-six commas, one dot, six dashes, one hundred and forty-nine spaces, eighty-two quotes, two words "This", five words "and", two words "commas", one word "dash", two words "dashes", two words "dot", one word "eight", two words "eighteen", two words "eighty", one word "eleven", one word "fifteen", two words "fifty", two words "five", three words "forty", four words "four", one word "fourteen", two words "has", four words "hundred", two words "letters", two words "nine", one word "nineteen", one word "ninety", eighteen words "one", two words "quotes", two words "sentence", two words "seven", two words "seventeen", one word "seventy", four words "six", one word "sixteen", one word "sixty", two words "spaces", one word "ten", two words "thirteen", two words "thirty", three words "three", one word "twelve", two words "twenty", twenty-one words "two", thirteen words "word" and thirty-one words "words".

Now, how to build that one? Amazingly, the following very simple approach works. Start with some string. Build a sentence that describes it. Now build a sentence that describes the previous sentence. And so on, until at one point you find that the sentences stop changing. It's true that this can never happen - but it turns out that trying out several initial strings is enough to find one that leads to a solution. It's true that the solution will be excessively long (e.g., all [one word "smth"] clauses look really unnecessary, don't they?), but who cares?

Here's the code:
http://77.41.63.3/blog/self-referential/SelfReferentialSentence.html
http://77.41.63.3/blog/self-referential/NumberSpelling.html

4 comments:

  1. Nice! I had the same idea in mind too.

    How did you HTML syntax highlight your code? Is there a program that also puts the line numbers in html?

    ReplyDelete
  2. I've just used a random tool found through Google: http://www.chami.com/colorizer/

    ReplyDelete
  3. Петя, привет, это Серёжа Маркелов, ссылки на код не работают.

    К слову, а ты уверен, что существует предложение, которое растёт неограниченно? У меня (почти) есть доказательство, что такое невозможно (разумеется, это не доказывает, что в конце будет неподвижная точка, можно себе представить, что будет конечный период).

    ReplyDelete
  4. Привет!

    Ссылки на код - ага, у меня сломалась материнская плата дома. Восстанавливаю потихоньку.

    Про предложение - я имел как раз в виду в посте конечный период. Собственно в большинстве случаев как раз он и получается, если эксперимент ставить.

    Например: если начать с "one", то получается период длины 19 после предпериода длины 61. С "word" - 19 после 71. С "forty-two" - 1 после 31. С "Moscow" - 28 после 63.

    У меня есть идея как можно было бы доказать что бесконечного разрастания не бывает (грубо говоря, можно доказать по индукции, что общее число слов не превосходит X для некоторого X, так как общее количество разных возможных слов конечно, и количества слов в числительных ограничены), но доводить ее не очень хочется. А ты как доказываешь?

    ReplyDelete