4, 8, 15, 16, 23, 42
Напишите программу, которая выводит эту последовательность чисел бесконечно. Тем не менее, номера не должны появляться в вашем исходном коде нигде.
Следующее не является допустимой программой Java для вывода чисел, потому что числа появляются в исходном коде:
class TheNumbers {
public static void main(String[] args) {
for(int n = 0;;) System.out.println(
n == 4 ? n = 8 :
n == 8 ? n = 15 :
n == 15 ? n = 16 :
n == 16 ? n = 23 :
n == 23 ? n = 42 : (n = 4)
);
}
}
Определение «Числа не должны появляться в вашем исходном коде» выглядит следующим образом:
- Вы не должны использовать цифру 4.
- Вы не должны использовать цифру 8.
- Вы не должны использовать цифру 1, а затем цифру 5.
- Вы не должны использовать цифру 1, а затем цифру 6.
- Вы не должны использовать цифру 2, а затем цифру 3.
Если ваш язык игнорирует определенные символы, которые могут быть помещены между цифрами, это недопустимая замена. Так, например, если ваш язык интерпретирует литерал 1_5
как15
, это будет считаться цифрой 1, за которой следует цифра 5.
Альтернативные основания включены в ограничение, например:
- Binary 100 не может быть заменен 4.
- Восьмеричное 10 не может быть использовано вместо 8.
- Шестнадцатеричный F не может использоваться вместо 15.
Следовательно, следующее является допустимой (но не очень вдохновляющей) Java-программой для вывода чисел, поскольку числа не отображаются в исходном коде:
class TheNumbers {
public static void main(String[] args) {
for(int n = '*';;) {
System.out.println(n -= '&');
System.out.println(n *= 2);
System.out.println(n += 7);
System.out.println(++n);
System.out.println(n += 7);
System.out.println(n += 19);
}
}
}
Обратите внимание, что в этой программе '*'
и'&'
заменены целые числа 42 и 38, поскольку в противном случае цифры 4 и 8 появятся в его исходном коде.
Определение «выводит последовательность бесконечно» открыто для интерпретации. Так, например, программа, которая выводит глифы, уменьшающиеся, пока они не становятся «бесконечно» маленькими, будет действительной.
Престижность, если вы можете сгенерировать последовательность каким-либо образом, который не в основном жестко кодирует каждое число.
- Вывести его в формулу. У меня сложилось впечатление, что нет ни одного, но, возможно, есть или это может быть подделано.
- Исправление псевдослучайного генератора для возврата последовательности.
Это конкурс популярности, так что будьте креативны. Ответ с наибольшим количеством голосов 26 марта - победитель.
источник
This isn't an interesting question, IMHO, since the solution is pretty trivial. Please post in the sandbox next time.
было бы намного лучшеThis is a stupid question.
, но это только мое личное мнение.Ответы:
Ява
Я решил добавить еще одну запись, поскольку она полностью отличается от моей первой (которая была больше похожа на пример).
Эта программа вычисляет среднее значение массива, введенного пользователем ...
... или это?
источник
питон
Изменить: Согласно предложению nneonneo, скрипт теперь не содержит цифр.
источник
while True:
так, чтобы в вашем ответе вообще не было цифр.while True:
чаще встречаетсяPerl
В исходном коде ничего не скрыто. Нет. Если код не работает, напечатайте
use re "eval";
перед ним (требуется в Perl 5.18).Пояснение в спойлере.
источник
Brainfuck
Я так плох в искусстве ASCII!
Проверьте это здесь: http://ideone.com/kh3DYI
источник
Unix C
Есть много мест, где можно найти числовые константы.
источник
C #
источник
a(i)=a(i-1)+a(i-3)+a(i-5)
действительно кажется более простым решениемC #
Использование того факта, что любая последовательность из N элементов может быть сгенерирована полиномом N-1, и ввод чисел требуют большого количества звуковых сигналов и повышений. Для справки, производный полином I
Я назначил факторы для переменных, названных по номерам, для простоты;)
Первая версия:
Мне понравилось проявление растущей напряженности, так как число ЗВУК уменьшается после каждого числа.
Затем я подумал, что могу рассчитать коэффициенты, используя звуковой сигнал и сигнал тоже:
После этого ушел немного за борт ...
Использование оператора по умолчанию в C # для типов значений позволяет инициализировать BEEEP на ноль. Таким образом, никакие числовые литералы не используются в коде. Основной алгоритм такой же. но факторы рассчитываются в линию.
источник
D
Не разрешается использовать цифры 4, 8, 15, 16, 23 или 42 в моем коде? Нет проблем, тогда я не буду использовать цифры вообще!
источник
Javascript + HTML
Анти-гольф!
<pre>
Элемент отображает число в последовательности. Он также содержит весь код, необходимый для перехода к следующему номеру в последовательности. Таким образом,<pre>
is eval'd, в результате чего текст<pre>
обновляется, чтобы напомнить следующий номер в последовательности. Этот процесс повторяется бесконечно.Вот оно в действии!
источник
С
Наденьте свои щурящиеся очки :-)
источник
4
с и две8
с.Haskell, 1 LoC
Я решил пойти на удобочитаемую однострочку, чтобы показать, какой классный Хаскелл. Кроме того, я решил избежать всех цифр, на всякий случай.
Благодаря встроенной ленивой оценке, Haskell может манипулировать (отображать, разбивать, объединять, фильтровать ...) бесконечно длинными списками. Он даже имеет несколько встроенных модулей для их создания. Поскольку строка - это просто список символов, бесконечно длинные строки также не являются загадкой для Хаскелла.
источник
fromEnum
выглядит лучшеData.Char.ord
, и несколько корочеMathematica
Мы можем ответить на этот вопрос, сосредоточившись на повторяющихся частичных знаменателях периодической непрерывной дроби, показанной ниже. Они то, что нам нужно.
В конце концов, они содержат бесконечную последовательность, которую мы пытаемся создать: 4, 8, 15, 16, 23, 42, 4, 8, 15, 16, 23, 42 ...
В Mathematica можно получить квадратичное иррациональное значение, соответствующее периодической непрерывной дроби
где 0 относится к неявной целочисленной части.
Мы можем проверить, перевернув операцию:
4 и 8 нарушают одно из правил вызова. Подстрока
15
является дополнительным нарушением. Мы можем переформатировать квадратичное иррациональное, чтобы удовлетворить правилам.Теперь мы берем интересующую последовательность:
И напечатать список навсегда ...
источник
16
дроби, пока я набирал комментарий об этом.C / C ++
Используя только символы
L
,O
,S
иT
несколько раз в таком порядке:источник
Ява
Я не могу найти образец в этой последовательности. Если нет распознаваемого шаблона, мы могли бы просто сложить кучу маленьких простых чисел, втиснуть их во встроенный в Java RNG и назвать его днем. Я не понимаю, как это может пойти не так, но опять же, я оптимист :)
источник
while(true)
: ideone.com/1xaPdOБаш однострочный
Добавлен разрыв строки для удобства чтения. Он (ab) использует тот факт, что это первые шесть чисел OEIS Sequence A130826 .
источник
awk -F"[ ,]" '/%S/ {for (i=3;i<=9;i++) printf $i" "}'
дляcurl
.yes
и сбросить перенаправление на/dev/null
сcurl -s
. Нечто подобноеyes $(curl -s "https://oeis.org/search?q=id:A$((130726+100))&t=text" | awk -F"[ ,]" '/%S/ {for (i=3;i<9;i++) printf $i" "}')
yes
иcurl -s
- просто бесстыдно добавил это в свой ответ. :-)C не использует никаких чисел и никаких символьных значений
источник
Мне нравится идея использования последовательности
как в этом ответе . Нашел это через Поиск OEIS как последовательность A122115 .
Если мы пройдем последовательность в обратном порядке, мы найдем подходящую пятерку инициализации, которая не содержит 4, 8, 15, 16 или 23.
python3:
источник
JavaScript
Без цифр это хороший ход. Но вместо того, чтобы печатать последовательность один раз за проход через цикл, печатайте только один раз за проход.
Нижняя часть строки кодирует числа для печати, а верхняя часть строки кодирует следующий символ для поиска. Там, где встречаются две части (один
F
) коды, сбрасывающие цикл.источник
питон
Побитовые операторы и некоторая простая математика.
источник
Рубин
Генерирует числа путем вложения одинаково мистической последовательности 0, ∞, 9, 0, 36, 6, 6, 63 ;
Ничего хорошего из этого не получится.
источник
С (
5450 символов)Я публикую ответ по гольфу, потому что игра в гольф, по крайней мере, делает его веселым.
источник
a=0;
. Единственным эффектом будет то, что вы можете начать последовательность где-то, кроме 4 (вероятно, 8). В любом случае, это перепутает последовательность приa
переполнении. Это технически неопределенное поведение, но вероятным результатом является то, что вы будете печатать мусор половину времени.for
не помогает, если нет инициализации.for(;;)
такое же количество символов, что иwhile()
. Я интерпретировал правила так, что там должны быть переводы строки ... Но я мог бы использовать хвостовую рекурсию с main ...Haskell
http://ideone.com/erQfcd
Изменить: Что я использовал для генерации коэффициентов: https://gist.github.com/ion1/9578025
Редактировать: мне действительно понравилась программа agrif, и в итоге я написал эквивалент на Haskell, пока разбирался с ним. Я выбрал другую базу для магического числа.
http://ideone.com/kzL6AK
Редактировать: мне также понравилась его вторая программа, и в итоге я написал реализацию квадратичного иррационального числа в Haskell ;-). Используя библиотеку и магическое число Агрифа, эта программа напечатает последовательность.
Вот как можно искать магическое число с помощью библиотеки:
Напечатанное значение обозначает номер
(−644047 + 1 √424477224534)/30815
. Все, что вам нужно сделать, - это найти факторы, которые избавляют от недопустимых последовательностей цифр в числах, не меняя значения выражения.источник
C #
Я нашел семя после прослушивания какой-то радиостанции в полете над Тихим океаном.
источник
питон
Хотя многие люди использовали шаблоны, взятые из OEIS, я решил создать свой собственный набор функций для представления чисел.
Первая функция, которую я создал, была period (). Это функция, которая повторяет каждые шесть входных чисел, используя циклические свойства функций триггера. Это выглядит так:
Затем я создаю полином (). Это использует следующий полином:
(В моем коде некоторые коэффициенты представлены в виде сумм, потому что они содержат потерянные числа в качестве одной из своих цифр.)
Этот полином преобразует вывод period () в правильное потерянное число, например так:
Постоянно увеличивая i и пропуская его через обе функции, я получаю потерянные числа, повторяющиеся бесконечно.
(Примечание: я часто использую float () в коде. Это так, Python делает деление с плавающей запятой вместо того, чтобы сказать 2/3 = 0.)
источник
4
по прибытиюpolynomial
.Emacs Lisp 73 символа
Лучший способ зациклить навсегда? Циклический список!
Но подождите, это еще не все!
? \ ^ D - это хороший способ вставить символ для EOT, однако, если бы я просто отправлял файл, мне не понадобился бы буквальный «\ ^ D», я мог бы просто вставить «?» за которым следует фактический символ EOT, таким образом, действительное число необходимых символов уменьшается до: 63
редактировать
Я работал над «gel», который пока не является реальным языком, но в основном представляет собой серию макросов emacs lisp для Code Golf. В «геле» это было бы решением:
и без ожидания:
44 символа с хорошим входом персонажа. Было бы 34, если бы не веб-представление.
источник
Юля
Исследуя некоторое время, я нашел математический способ выразить последовательность другими последовательностями, не используя ни одного из чисел (или хитрых способов их использования):
Выход:
источник
C ++
Хороший чистый язык, такой как C ++, может позволить вам аккуратно и легко читать исходные тексты и имеет преимущество в том, что его легко скопировать вручную с минимальной двусмысленностью.
Здесь решение достигается с использованием только числа 1.
Тест: http://ideone.com/fuOdem
источник
Схема (Guile)
http://ideone.com/QBzuBC
Возможно, это нарушает правило «не кодировать числа в других базах», но я думаю, что оно настолько неясно, что не считается. В качестве доказательства этой неясности эти два магических числа в базе 51:
Изменить : тот же трюк, другое представление. Мне на самом деле нравится еще один, поскольку он не зависит от произвольно выбранной базы. Однако для этого требуется реализация схемы с поддержкой бесконечной точности для квадратичных иррациональных чисел, которых (AFAIK) не существует. Вы могли бы реализовать это в чем-то вроде Mathematica.
источник
PHP
Я думал, что пришло время, когда кто-то отправил ответ php, не самый лучший, но в любом случае забавный.
Ас крики пассажиров, как самолет падает
источник
Perl
источник