Эта идея основана на сообщениях чата @ TùxCräftîñg .
Взгляните на приведенный ниже пример последовательности:
INVALID0
, INVALID1
, INVALID2
INVALID3
, INVALID4
...INVALID9
После INVALID9
этого это продолжается так:
INVALI0
, INVALI1
, INVALI2
, INVALI3
...INVALI9
И после INVALI9
, это так:
INVAL0
, INVAL1
, INVAL2
, INVAL3
...INVAL9
После, INVAL9
это так:
INVA0
, INVA1
, INVA2
, INVA3
, ...INVA9
Обратите внимание, как мы продолжали удалять букву из слова INVALID
каждый раз.
Вы будете повторять это до тех пор, пока не достигнете одной буквы, то есть буквы I
:
I0
, I1
, I2
, I3
, I4
...I9
Теперь ваша задача состоит в том, чтобы взять ввод слова и создать последовательность из него, как в примере выше. Ваш код также должен работать с отдельными буквами, и в этом случае результирующая последовательность будет короче.
Вы можете выбрать любой формат ввода и вывода, который вы предпочитаете (с или без разделителя, как вы хотите), но вы должны указать, какой из них вы выбрали.
Последовательность должна быть в точно указанном порядке.
Самый короткий код, в байтах, который успешно завершает этот вызов, выигрывает вызов.
Полная последовательность в приведенном выше примере:
INVALID0, INVALID1, INVALID2, INVALID3, INVALID4, INVALID5, INVALID6, INVALID7, INVALID8, INVALID9, INVALI0, INVALI1, INVALI2, INVALI3, INVALI4, INVALI5, INVALI6, INVALI7, INVALI8, INVALI9, INVAL0, INVAL1, INVAL2, INVAL3, INVAL4, INVAL5, INVAL6, INVAL7, INVAL8, INVAL9, INVA0, INVA1, INVA2, INVA3, INVA4, INVA5, INVA6, INVA7, INVA8, INVA9, INV0, INV1, INV2, INV3, INV4, INV5, INV6, INV7, INV8, INV9, IN0, IN1, IN2, IN3, IN4, IN5, IN6, IN7, IN8, IN9, I0, I1, I2, I3, I4, I5, I6, I7, I8, I9
Другие примеры:
Ввод: MAYBE
(Прописные и строчные буквы не имеют значения)
Выход:
MAYBE0, MAYBE1, MAYBE2, MAYBE3, MAYBE4, MAYBE5, MAYBE6, MAYBE7, MAYBE8, MAYBE9, MAYB0, MAYB1, MAYB2, MAYB3, MAYB4, MAYB5, MAYB6, MAYB7, MAYB8, MAYB9, MAY0, MAY1, MAY2, MAY3, MAY4, MAY5, MAY6, MAY7, MAY8, MAY9, MA0, MA1, MA2, MA3, MA4, MA5, MA6, MA7, MA8, MA9, M0, M1, M2, M3, M4, M5, M6, M7, M8, M9
Входные данные: AFTER
Выход:
AFTER0, AFTER1, AFTER2, AFTER3, AFTER4, AFTER5, AFTER6, AFTER7, AFTER8, AFTER9, AFTE0, AFTE1, AFTE2, AFTE3, AFTE4, AFTE5, AFTE6, AFTE7, AFTE8, AFTE9, AFT0, AFT1, AFT2, AFT3, AFT4, AFT5, AFT6, AFT7, AFT8, AFT9, AF0, AF1, AF2, AF3, AF4, AF5, AF6, AF7, AF8, AF9, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9
Входные данные: WHAT ARE YOU DOING
WHAT ARE YOU DOING0, WHAT ARE YOU DOING1, WHAT ARE YOU DOING2, WHAT ARE YOU DOING3, WHAT ARE YOU DOING4, WHAT ARE YOU DOING5, WHAT ARE YOU DOING6, WHAT ARE YOU DOING7, WHAT ARE YOU DOING8, WHAT ARE YOU DOING9, WHAT ARE YOU DOIN0, WHAT ARE YOU DOIN1, WHAT ARE YOU DOIN2, WHAT ARE YOU DOIN3, WHAT ARE YOU DOIN4, WHAT ARE YOU DOIN5, WHAT ARE YOU DOIN6, WHAT ARE YOU DOIN7, WHAT ARE YOU DOIN8, WHAT ARE YOU DOIN9, WHAT ARE YOU DOI0, WHAT ARE YOU DOI1, WHAT ARE YOU DOI2, WHAT ARE YOU DOI3, WHAT ARE YOU DOI4, WHAT ARE YOU DOI5, WHAT ARE YOU DOI6, WHAT ARE YOU DOI7, WHAT ARE YOU DOI8, WHAT ARE YOU DOI9, WHAT ARE YOU DO0, WHAT ARE YOU DO1, WHAT ARE YOU DO2, WHAT ARE YOU DO3, WHAT ARE YOU DO4, WHAT ARE YOU DO5, WHAT ARE YOU DO6, WHAT ARE YOU DO7, WHAT ARE YOU DO8, WHAT ARE YOU DO9, WHAT ARE YOU D0, WHAT ARE YOU D1, WHAT ARE YOU D2, WHAT ARE YOU D3, WHAT ARE YOU D4, WHAT ARE YOU D5, WHAT ARE YOU D6, WHAT ARE YOU D7, WHAT ARE YOU D8, WHAT ARE YOU D9, WHAT ARE YOU 0, WHAT ARE YOU 1, WHAT ARE YOU 2, WHAT ARE YOU 3, WHAT ARE YOU 4, WHAT ARE YOU 5, WHAT ARE YOU 6, WHAT ARE YOU 7, WHAT ARE YOU 8, WHAT ARE YOU 9, WHAT ARE YOU0, WHAT ARE YOU1, WHAT ARE YOU2, WHAT ARE YOU3, WHAT ARE YOU4, WHAT ARE YOU5, WHAT ARE YOU6, WHAT ARE YOU7, WHAT ARE YOU8, WHAT ARE YOU9, WHAT ARE YO0, WHAT ARE YO1, WHAT ARE YO2, WHAT ARE YO3, WHAT ARE YO4, WHAT ARE YO5, WHAT ARE YO6, WHAT ARE YO7, WHAT ARE YO8, WHAT ARE YO9, WHAT ARE Y0, WHAT ARE Y1, WHAT ARE Y2, WHAT ARE Y3, WHAT ARE Y4, WHAT ARE Y5, WHAT ARE Y6, WHAT ARE Y7, WHAT ARE Y8, WHAT ARE Y9, WHAT ARE 0, WHAT ARE 1, WHAT ARE 2, WHAT ARE 3, WHAT ARE 4, WHAT ARE 5, WHAT ARE 6, WHAT ARE 7, WHAT ARE 8, WHAT ARE 9, WHAT ARE0, WHAT ARE1, WHAT ARE2, WHAT ARE3, WHAT ARE4, WHAT ARE5, WHAT ARE6, WHAT ARE7, WHAT ARE8, WHAT ARE9, WHAT AR0, WHAT AR1, WHAT AR2, WHAT AR3, WHAT AR4, WHAT AR5, WHAT AR6, WHAT AR7, WHAT AR8, WHAT AR9, WHAT A0, WHAT A1, WHAT A2, WHAT A3, WHAT A4, WHAT A5, WHAT A6, WHAT A7, WHAT A8, WHAT A9, WHAT 0, WHAT 1, WHAT 2, WHAT 3, WHAT 4, WHAT 5, WHAT 6, WHAT 7, WHAT 8, WHAT 9, WHAT0, WHAT1, WHAT2, WHAT3, WHAT4, WHAT5, WHAT6, WHAT7, WHAT8, WHAT9, WHA0, WHA1, WHA2, WHA3, WHA4, WHA5, WHA6, WHA7, WHA8, WHA9, WH0, WH1, WH2, WH3, WH4, WH5, WH6, WH7, WH8, WH9, W0, W1, W2, W3, W4, W5, W6, W7, W8, W9
Leaderboard
источник
INVALID0INVALID1INVALID2
) допустимым форматом вывода?Ответы:
Желе , 7 байт
Попробуйте онлайн!
Как это работает
источник
05AB1E ,
108 байтобъяснение
Попробуйте онлайн!
Сохранено 2 байта благодаря Аднану
источник
.p
эквивалентноŒ¹g£
:).Javascript (ES6),
5347 байтСохранено 6 байтов благодаря Peanut & Neil
Вывод: все слова в виде одной строки без разделителя.
пример
источник
s&&
вместоs?
...:''
?+''
часть из последнего кода, который я опубликовал. Попробуй это здесь!Perl, 29 байт
Включает +1 для
-n
Запустить с вводом на STDIN:
Просто код:
источник
^
хотя ... Похоже, что он выполняет ту же работу, что и(*FAIL)
, но я не понимаю, почему. Могли бы вы объяснить?^
происходит сбой матча, из-за чего перед ним возвращается регулярное выражение^
... Я имею в виду на вашем примере, почему,/
не работает, но^/
работает?^
находится за пределами текущего понимания оптимизатора. Любое из этих двух типов поведения может измениться в будущем.Haskell,
4743 байтаПример использования:
f "IN"
->["IN0","IN1","IN2","IN3","IN4","IN5","IN6","IN7","IN8","IN9","I0","I1","I2","I3","I4","I5","I6","I7","I8","I9"]
.Простой рекурсивный подход. Добавьте каждую цифру к слову и добавьте рекурсивный вызов с удалением последней буквы.
источник
Pyth, 9 байт
Программа, которая принимает ввод строки в кавычках в STDIN и печатает список строк.
Попробуйте онлайн
Как это работает
источник
Пип ,
1211 байтПринимает слово в качестве аргумента cmdline. Выходы без разделителей.
Попробуйте онлайн!
Объяснение:
источник
V , 20 байтов
Попробуйте онлайн!
Поскольку это содержит непечатаемые символы, вот читаемый формат:
А вот и hexdump:
Объяснение:
источник
Bash + coreutils, 54 байта:
Просто перебирает последовательность
[Length of Input,1]
и во время каждой итерации выводит входное слово с длиной текущего значения итерации,9
причем каждое число[0,9]
добавляется к каждой9
копии слова. Выполнить его в файле , а слово или слова в кавычках, то естьbash A.sh "blah blah blah"
.источник
Floroid -
50 4731 байтВ настоящее время использует метод, аналогичный тому, который @JonathanAllan использует в своем втором рекурсивном методе.
Может я была такой , если я бы более тщательно реализован декартово произведение на языке:
Bc:ca([c]+[c[:-a-1]KaIw(Z(c)-1)],hd)
.Testcases
источник
(lambdabot) Haskell - 49 байтов
Lambdabot - бот IRC в #haskell; он автоматически импортирует кучу модулей, в том числе и те,
Data.List
где находятсяinits
. И поскольку язык определяется его реализацией, я могу назвать этот haskell lambdabot и не платить байты за импорт.Обычный Haskell:
источник
tails
работает?INVALID, NVALID, VALID, ALID, LID, ID, D,
Braingasm ,
34333128 байтВ своем нынешнем состоянии, braingasm - это просто прославленный мозговой трах с несколькими ( примерно 3? ) Дополнительными функциями. Я тратил большую часть времени на разработку, чтобы сделать его как можно более "предприимчивым", вместо того, чтобы фактически добавлять функции ...
В любом случае следующий код должен работать с последним снимком разработки. Он принимает ввод без строки из stdin, like
$ echo -n INVALID | braingasm invalid.bg
и печатает в stdout.Объяснение:
редактировать: по-видимому, это нормально, чтобы
пропуститьиспользовать пустую строку в качестве разделителяисточник
Python 2,
5355 байт+2 байта: объявление f необходимо с рекурсией (как указано @Destructible Watermelon)
Возвращается к пустой строке (получая пустой список), обрезает символ за раз и дополняется списком из десяти текущей строки с цифрами 0-9, добавленными к каждой.
Тест на идеоне
Python 3,
5456 байтТест на идеоне
источник
f=
часть (немного похоже на то, как вы не можете предполагать, что переменные имеют значения)Swift 3, 150 байт
Не совсем самое короткое решение, но не страшное для Swift
Проверьте это онлайн в песочнице IBM Swift
Ungolfed
источник
Руби, 51
Разделитель не используется.
Добавьте следующее после
i%10
для разделителей:,$/
для новой строки,,?|
для|
(аналогично для любого печатного символа),,' '
для пробела.В тестовой программе
источник
PHP,
6456 байтисточник
Haskell,
4946 байтовисточник
f=(>>=(
карту['0'..'9']).snoc).tail.reverse.inits
. 3 с помощью fmap:f=(>>=(<$>['0'..'9']).snoc).tail.reverse.inits
reverse.tail.inits
вместоtail.reverse.inits
вас также получить правильный вывод;)tail
, я думаю, я имел в видуinit
, но замена его с реверсом тоже отлично работает :-)C #,
107102 байтаUngolfed
источник
k++
в гольф, убрав в цикле for и добавив++
после использованияk
, например, так:string f(string i){var o="";while(i!=""){for(int k=0;k<=9;)o+=i+k+++",";i=i.Remove(i.Length-1);}return o;}
Кроме того, запятые OP не требуются для вызова OP, хотя, если вы предпочитаете, вы, конечно, можете их оставить. Без этого:string f(string i){var o="";while(i!=""){for(int k=0;k<=9;)o+=i+k++;i=i.Remove(i.Length-1);}return o;}
Рубин,
9085 байтЕсли строка пуста, вернуть пустой массив. В противном случае сгенерируйте строку + число в каждом номере от 0 до 9 и вызовите
f
строку без последнего символа.Сохранено 5 байтов благодаря @LevelRiverSt
источник
def
иend
. Вы можете сделать лямбду, так что вам даже не нужно давать ей имя, если вы присваиваете переменную и вызываете ее с аргументами в квадратных скобках.f=->s{if s=="";return[];end;(0..9).map{|i|s+i.to_s}+f[s.chars.take(s.length-1).join]}
на 5 байт короче.->
синтаксисеf=->s{s==""&&(return[]);(0..9).map{|i|s+i.to_s}+f[s.chars.take(s.length-1).join]}
сохраняет еще 4 байта. Ruby оценивает логические выражения слева направо и не оценивает более поздние термины, если это не необходимо для определения результата. Та же самая техника игры в гольф может использоваться в C. Я не знаю, почему()
вокругreturn[]
требуется в этом случае.Perl 6, 32 = 31 байт + 1 для -p
Я не настолько опытен в Perl 6, поэтому могут быть способы уменьшить его еще больше.
Используется
-p
для оценки один раз для каждой строки ввода. Строка помещается в$_
и после запуска программы печатается$_
.Это
(~$_,*.chop...^!*)
список, в котором первый элемент является~
вводом stringified ( ), каждый последующий элемент получается путем удаления последнего символа из предыдущего (*.chop
) и продолжается до тех пор, пока строка не станет пустой (!*
), исключая регистр пустой строки (^
in...^
) ,X~
генерирует все пары списков слева и справа, используя указанную операцию, в данном случае - строку concatenation (~
) для них.^10
это список 0, 1, ... 9.Наконец, список снова приводится в строку
~
, давая необходимые слова с пробелом в качестве разделителя.источник
PowerShell v2 +, 60 байт
Цикл от длины входной строки до
1
. На каждой итерации устанавливаем хелпер$i
равным текущему числу минус1
. Это необходимо, потому что.length
это общее количество символов, но индексирование строки основано на 0. Затем мы переходим от0
к9
. Каждый внутренний цикл разрезает входную строку$n
на основе значения нашего внешнего цикла,-join
возвращает ее обратно в строку и объединяет строки в счетчике внутреннего цикла. Каждый отдельный результат цикла помещается в конвейер и выводится неявно при завершении программы.источник
Дьялог АПЛ ,
1411 байтВозвращает список строк.
,
listify (сделать таблицу в список)⎕D
все цифры∘.,⍨
добавляется ко всем (т.е. делает все комбинации с)⌽
перевернутый список,\
совокупное объединение⍞
ввод текстаПопробуй APL онлайн!
источник
Groovy (58 байт)
Понятия не имею, почему я даже пытаюсь опубликовать ответ на Groovy ... Минимальный требуемый размер для игры в гольф Groovy - 2, исходя из необходимости закрытия, поэтому лучший ответ здесь - удвоить мой минимальный размер.
Попробуйте это здесь: https://groovyconsole.appspot.com/script/5148433803378688
источник
Пакетная,
8583 байтаисточник
Java 7,
10598 байт-7 байт благодаря @Poke .
Ungolfed :
Тестовый код:
Попробуй это здесь.
Выход:
источник
void c(String s){for(int x=0,l=s.length();x<l*10;)System.out.print(s.substring(0,l-x/10)+x++%10);}
Python 3, 62 байта
Не использует рекурсию как другой ответ.
Причина, по которой ""
x+" "
находится в: -0, по-прежнему равна нулю, и поэтому мы не можем использовать минус, чтобы получить всю строку таким образом, поэтому самое высокое, что мы можем получить, это минус один, поэтому "" - это заполнение Струна,источник
C,
72, 70 байтовПринимает строки как пары указатель / размер. Основной тест:
источник
Сетчатка , 37 байт
Количество байтов предполагает кодировку ISO 8859-1.
Попробуйте онлайн!
объяснение
Получить все префиксы ввода путем сопоставления и печати всех перекрывающихся совпадений справа.
Добавить
0
к каждой строке.{
Указует на то, что остальные три этапа выполняется в цикле , пока они не не изменить строку. Это%
говорит о том, что они должны применяться к каждой строке отдельно.Сам этап просто дублирует последнюю строку (изначально это просто строка, на которой выполняется, но каждая итерация трех этапов добавляет еще одну строку).
Увеличьте цифру в последней строке, выполнив следующую подстановку символов:
И наконец:
Оставьте только первые 10 строк, чтобы мы удалили только что добавленную строку
INPUT9
.источник
Scala,
7370 байтНазовите это как
f("INVALID")
. Возвращает последовательность символов.объяснение
Альтернативное решение, 73 байта
определяет анонимную функцию. Чтобы позвонить, напишите
и называть это так
Он возвращает последовательность строк, которая будет выглядеть следующим образом при печати:
объяснение
источник
CJam,
2928 байтОбъяснение:
Попробуйте онлайн
источник