Последовательность «Смотри и говори» или «Скажи, что ты видишь» - это последовательность чисел, каждая из которых описывает последнюю.
1
11 (one one)
21 (two ones)
1211 (one two, one one)
111221 (one one, one two, two ones)
312211 (three ones, two twos, one one)
и так далее ... https://oeis.org/A005150
Во всяком случае, это обычная задача игры в гольф (выигрывает наименьшее количество байт), чтобы создать программу, которая принимает два аргумента, начальное число и количество итераций. Например, если вы подключили «1» и «2», результатом будет «21». Если вы подключили «2» и «4», результатом будет «132112». Повеселись!
Ответы:
Pyth,
108 байт-2 байта @FryAmTheEggman
Объяснение:
Попробуй это здесь .
источник
ussrG8Qz
CJam, 8 байт
Формат ввода - это начальное число сначала, а затем итерации, разделенные пробелами.
Проверьте это здесь.
объяснение
Массив также выравнивается перед печатью, поэтому в результате получается только необходимое число.
источник
JavaScript, 57 байт
Рекурсия хорошо работает для этой проблемы. Первый параметр - это начальное число в виде строки, а второй - количество итераций.
источник
b=>F=a=>b--?F(a.replace(/(.)\1*/g,c=>c.length+c[0])):a
обнаружил, что во время игры в гольф мой ответ, прежде чем я понял, что он в значительной степени идентиченMATL , 9 байт
Входные данные: количество итераций, начальный номер.
Попробуйте онлайн!
источник
R, 87 байт
Разоблаченный и объясненный
источник
Perl 6, 63 байта
Это так коротко, как я мог бы получить это сейчас, могут быть некоторые хитрые флаги, которые могут уменьшить его, я не уверен
источник
Рубин, 63 байта
Полная программа, так как вопрос, кажется, задает это. Принимает ввод в качестве аргументов командной строки.
Нет,
gsub!
не может использоваться, так как строки в$*
заморожены: /источник
-p
флаг для сохранения байтов? Если вы используете его,gsub
работает на линии STDIN, как если бы это было$_.gsub!
. Тогда аргумент командной строки - это итерации, поэтомуn,=$*
и другие входные данные считываются из STDIN.Retina ,
464527 байтМартин много сделал, чтобы помочь в этом.
Попробуйте онлайн
Принимает ввод в формате:
<start>
это начальный номер.<count>
находится в одинарном, все подчеркивания, и сколько итераций выполняется.Одна итерация,
2016 байтов:источник
Haskell , 62 байта
Попробуйте онлайн!
источник
JavaScript ES6, 71 байт
Принимает ввод в виде строки и числа.
источник
('1',2)
дает мне12
, когда это должно быть21
. Ваша длина должна предшествовать символу в замене.Perl 5, 50 байт
Аргументы в обратном порядке (количество итераций, затем начальное число). Пример:
источник
$_
вместоsay
, я полагаю, но я не проверял это. Текущее решение - это программа.05AB1E , 9 байт (не конкурирует)
Исправлено из-за комментариев Эминьи, см. Ниже / правки.
Попробуйте онлайн!
источник
F
в начале и принять аргументы какiterations,initialNo
Dgs
наgy
.y
делать в этом контексте?R ,
6157 байт-4 спасибо @JayCe, как раз тогда, когда я был уверен, что это сделать нельзя проще!
Попробуйте онлайн!
источник
t(sapply(z,c))
призыв умный.Mathematica,
8173 байтаисточник
Желе , 6 байт (не конкурирует)
Попробуйте онлайн!
источник
Stax , 10 байт
Запускать и отлаживать онлайн!
Потратил слишком много байтов на правильный формат ввода-вывода ...
объяснение
Использует распакованную версию для объяснения.
Существенная часть
D|R{rm:f
(8 байт).Если первый ввод может быть принят как массив цифр, вся программа может быть записана в 9 байтов: Запустите и отладьте онлайн!
источник
Python 3, 138 байт
Я использовал рекурсивный подход.
Функция принимает два целых,
a
и ,b
как описано.Я поражен тем, насколько краткими являются записи здесь! Может быть, кто-то тоже придет с лучшим методом Python.
источник
Perl, 38 + 2 байта
Требуется
-p
флаг:Ввод - это многострочная строка:
Если также требуются все шаги, мы можем изменить его на следующее, что составляет 44 + 2 байта:
источник
Пилоны , 11
Как это работает:
источник
SmileBASIC,
10098 байтРаспечатывает все шаги.
T/T
там, чтобы закончить программу, когда Т 0.источник
APL (Dyalog Classic) , 22 байта
Попробуйте онлайн!
источник
Сетчатка , 27 байт
Попробуйте онлайн!
источник
К (нгн / к) , 30 байтов
Попробуйте онлайн!
источник
Python 3.6,
1009893 байтаПопробуйте онлайн!
Обратите внимание, что это создает лямбду, которая принимает строку и целое число и возвращает строку. Пример:
f('1', 5) == '312211'
Находит все повторяющиеся символы (
((.)\2*)
регулярное выражение), делает f-строку из их длины и самого символа (r'{len("\1")}\2'
), затем оценивает его. Использует рекурсию на counter (n and ...f(s,n-1)... or s
), чтобы избежать необходимости определять правильную функцию и цикл.источник