Вы тоже создаете программу, которая принимает целое число в качестве входных данных и выводит первое, что когда-либо было в этом числе последовательности вида и произнесения .
Например:
$ ./LAS
8
[1,11,21,1211,111221,312211,13112221,1113213211]
Точный способ вывода списка не имеет значения, поскольку пользователи могут отчетливо видеть разные номера последовательности. Здесь подвох хотя. Вы не можете использовать какую-либо пользовательскую переменную.
Например:
- Нет переменных, включая переменные в области видимости.
- Когда у вас есть функции, они не могут иметь названия. (Исключение: если вашему языку требуется основная функция или что-то подобное для работы, у вас может быть эта функция.)
- Когда у вас есть функции, они не могут иметь именованных аргументов.
Кроме того, вы не можете использовать библиотеку с конкретными возможностями, относящимися к последовательности «посмотрите и произнесите», и вы не можете получить доступ к сети или предоставить вашей программе какие-либо файлы (хотя она может генерировать и использовать свои собственные). Это код гольф, так короткий код в символах выигрывает!
code-golf
restricted-source
PyRulez
источник
источник
When you have functions, they can not have named arguments.
?Ответы:
GolfScript (31 символ)
Адаптировано из моего ответа на предыдущий вопрос «посмотри и скажи» . У этого есть менее обременительное ограничение для функциональных языков, которое позволяет сохранять 5 символов, но поскольку большинство ответов на предыдущий вопрос не могут быть адаптированы (это безумно обременительное ограничение для нефункциональных языков), я не думаю, что это имеет смысл чтобы закрыть это как обман.
источник
Haskell 206 символов
Он работает, используя функцию group, чтобы сгруппировать их в группы одинаковых вещей. Затем он использует аппликативы с функциями для создания функции, которая одновременно считывает длину и добавляет ее к одному из элементов. Он использует исправление и карту для создания рекурсивного определения (без указания точки). И все.
источник
J (42 символа)
Бессмысленное (также называемое молчаливое) программирование естественно для J.
Это функция, для ее использования вы пишете код, пробел и номер ввода. Например,
Обратите внимание на красивые коробки в выводе.
Приложение : Вот пара «читов», которые я поначалу был слишком застенчив, чтобы использовать, но теперь, когда я видел, как другие используют их сначала ...
Вот 36-символьная версия с другим «соглашением о вызовах»: замените 8 на количество терминов, которое вы хотите.
И если с дополнительными нулями на выходе все в порядке, вот версия с 32 символами:
источник
GolfScript, 36 символов
Переменные довольно редко используются в GolfScript, и эта задача, безусловно, не нуждается в них. Вход на стандартный вывод, вывод на стандартный вывод. Например, ввод
8
дает вывод:Я могу написать подробное объяснение этого кода позже, но, по крайней мере, вы можете легко сказать, что он не использует переменные, потому что он нигде не содержит оператора присваивания переменных
:
.источник
Haskell, 118 символов (80 без импорта)
источник
Bash и Coreutils,
11173 символовuniq -c
делает тяжелую работу, чтобы произвести следующий номер в последовательности.yes
,sed
Иeval
создать необходимое количество повторов конвейера обработки. Остальное просто форматирование.Вывод помещается в файл с именем
o
.:источник
Mathematica, 65 символов
Пример:
источник
J, 37 символов
Основано на моем ответе на вопрос о Образце гороха . Здесь может быть некоторый потенциал для сокращения. Использование так же, как для другого ответа J:
У этого также есть проблема дополнительных нулей, которую имел мой образец гороха.
источник
Perl 6:
6353 персонажаСоздайте ленивый список последовательности Look и Say (
1,*.subst(/(\d)$0*/,{.chars~.[0]},:g)...*
), а затем получите столько элементов, сколько указано пользователем ([^get]
что является индексом массива[0..(get-1)]
), иsay
их всех.Ленивый список работает, сначала беря 1, затем генерируя каждое последующее число, он берет последнее найденное число и заменяет все последовательности одной и той же цифры в соответствии с соответствием
/(\d)$0*/
и заменяет их {сколько} + {какая цифра} или.chars~.[0]
.Единственными переменными в этом коде являются
$0
: первый захват совпадения и неявная актуальная$_
переменная, которая.method
вызывается без вызова, и ни одна из них не определяется пользователем.источник
GolfScript,
5743 символаМой собственный подход. Закончилась дольше, чем существующая, к сожалению = (.
Пример вывода для стандартного ввода
8
:Альтернативная версия без
9
часового, но длиннее - 47 символов. Я подозреваю, что у этого есть больший потенциал:источник
Scala 178
источник
i
ini=>
является переменной.Дьялог АПЛ, 35 знаков
(⊢,⊂∘∊∘((≢,⊃)¨⊃⊂⍨2≢/0,⊃)∘⌽)⍣(⎕-1)⊢1
⎕
оценивается вход. В ссылке я заменил ее на 8, так как tryapl.org не позволяет вводить данные пользователем.Без именованных переменных (
a←1
), без именованных функций (f←{}
), без аргументов (⍺
,⍵
).Только состав функций:
f¨
уменьшить:,f/
коммутировать:f⍨
f⍣n
compose:f∘g
(f g h)B ←→ (f B)g(h B)
;A(f g h)B ←→ (A f B)g(A h B)
(f g)B ←→ f(g B)
;A(f g)B ←→ f(A g B)
(f g h k) ←→ (f (g h k))
Используемые примитивные функции:
A⊢B ←→ B
⌽B
⊃B
A,B
A≢B
, посчитайте:≢B
⊂B
раздел:A⊂B
∊B
В tryapl.org, если вы удалите трейлинг
⊢1
, который является аргументом для этой массивной составной вещи, вы можете увидеть диаграмму ее анализа:источник
J 66 (с вводом / выводом)
без IO, оценка 43:
Забавный вопрос, который нужно задать себе, когда появятся первые 9?
источник