Задача:
Ваша задача состоит в том, чтобы, учитывая предыдущие представления и сам ввод, вывести язык, на котором они написаны, в следующем формате:
Скажем, первая программа на Ruby. Он должен выводить 1
, потому что Ruby - это 1
первый язык, используемый в этой задаче. Пример программы:
a=gets
puts 1
Когда задано в качестве ввода, оно возвращается 1
.
Следующая программа может быть на Python. Он должен выводить 2
, потому что Python - это 2
второй язык, используемый в тесте. Пример программы:
print(1 if input()[0]=="a"else 2)
Учитывая первое представление, он выводит 1
, а сам дает свои выводы 2
.
Вам разрешено повторять языки, но нельзя отправлять ответ на языке предыдущего ответа.
Например, если третья программа написана на Ruby, она должна выводить с 1
учетом первой программы и самой себя (потому что Ruby является используемым 1
языком st), а с учетом второй программы она должна выводить 2
.
Правила:
- Если в
n
настоящее время есть ответы на вопросы, должны быть как минимумfloor(n / 3)
разные языки. Любая заявка, которая нарушает это правило, дисквалифицируется. - Никакие два «соседних ответа» (например, ответ
n
и ответn+1
) не могут использовать один и тот же язык. - Разные версии языка не считаются разными языками (поэтому
Python 2 == Python 3
). - Ответы должны принимать предыдущие материалы полностью в качестве входных данных.
- Первая заявка должна принять участие.
- Вы не можете отправить несколько ответов подряд.
- «Повторные ответы» (ответы с тем же кодом, что и в предыдущем представлении) не допускаются.
- Ответам не разрешается проходить количество выделенных байтов этого ответа - для получения более подробной информации см. «Количество выделенных байтов».
Выделенный счетчик байтов:
Для каждого номера ответа n
назначается количество байтов для этого ответа 45 + 5n
.
Форматирование ответа:
Отформатируйте ваш ответ так:
# {answer no.}, {language}
{program}
This prints:
- `1` in answer(s) {all answers using 1st language, with links}
- `2` in answer(s) {all answers using 2nd language, with links}
...
{optional explanation}
Для списков ответов сделайте это:
- `1` in answers [1]({link to answer}), [3]({link to answer})...
Подсчет очков:
Первый ответ, чтобы выжить после 7 дней без каких-либо действительных представлений после этого объявляется победителем.
источник
floor(n / 3)
языки). Я предполагаю, что это не намеренное поведение.Ответы:
26. > <> (язык 12), 164 байта
Моя первая в мире программа в> <>! Это 156 символов, но 164 байта в UTF-8.
Это печатает:
1
с ответами 1 , 5 , 7 , 9 и 14 (Retina).2
с ответом 2 (Brain-Flak).3
с ответом 3 (APL).4
с ответами 4 , 12 и 15 (Javascript).5
с ответами 6 и 8 (R).6
с ответами 10 , 17 , 20 , 22 и 25 (Баш).7
с ответами 11 и 19 (Mathematica).8
с ответом 13 (Python).9
с ответом 16 (Perl).10
с ответами 18 , 21 и 23 (C / C ++).11
с ответом 24 (зш).12
с этим ответом (> <>).Попробуйте онлайн!
Объяснение:
Первая строка - просто ответ № 5. Он ничего не делает, но отправляет указатель инструкции в нижнюю строку.
/
поворачивает рыбу вправо, и персонажи^mwfPes{'tc
кладутся в стек. Один символ ввода читается (i
). (Давайте назовем этот символC
для экспозиции.) 2 помещается в регистр (2&
). Затем мы переходим к началу второй строки (строка 1) (01.
).Эта строка сравнивается
C
с каждым символом в стеке. КопияC
хранится в нижней части стопки.{
вращает стек так, чтоC
находится сверху;:
дублирует это;}
поворачивает копию обратно на дно. Мы увеличиваем значение register (&1+&
), пока не будет найдено совпадение. (Таким образом, еслиC
«c», регистр содержит 3, когда совпадение найдено; еслиC
«t», регистр содержит 4 и т. Д.) Затем мы переходим к первому символу номера строки в регистре (0&.
) ,Строки с 3 по 13 имеют дело с тем, что делать, когда
C
c, t, ', {и т. Д. Соответственно. Указатель инструкций перемещается назад, когда мы прыгаем; он приземляется на первый символ данной строки, но после прыжка он продвигает галочку перед выполнением, поэтому он начинает выполняться с конца строки, возвращаясь назад. Каждая строка помещает соответствующий номер языка в стек, а затем отправляет рыбу вn
инструкцию, которая выводит ее.^
это самый сложный случай из-за моей собственной подлости с первой строкой этого ответа. Строка 13 читает ввод до EOF. Затем он направляется вниз к строке 15, которая сравнивает длину стека (l
) со значением 100 (aa*
). Если это длиннее ()?
), мы добавляем+
b
и1
получаем 12, этот язык; в противном случае 1 остается на вершине стека.источник
1. Сетчатка , 0 байт
Попробуйте онлайн!
Пустая программа печатает,
1
когда задан пустой ввод (т.е. сам), потому что она подсчитывает, как часто пустое регулярное выражение соответствует вводу (что всегда1+length(input)
).источник
2. Brain-Flak , 22 байта
Попробуйте онлайн!
Это проверяет вершину стека и помещает единицу в противоположный стек, если он не равен нулю. Затем он увеличивает и возвращает противоположный стек. Это возвращает 1 для пустой программы и 2 для всего остального.
Поскольку стеки в Brain-Flak по умолчанию равны нулю, пустая программа будет иметь ноль в верхней части стека, в то время как любая другая программа (кроме программ, заканчивающихся нулевыми символами) будет иметь истинное значение. Это означает, что мы можем запустить очень простую программу if в стеке ввода.
источник
3. APL, 7 байт
Объяснение:
источник
10. Bash (+ coreutils) [язык 6],
4474 байтаФиксированная версия (возвращает идентификатор языка)
Примечание: это ожидает завершающий перевод строки после введенного текста программы
источник
9. Сетчатка (язык 1), 20 байт
Попробуйте онлайн!
Как и plannapus, я решил пойти на переписку, чтобы немного изменить ситуацию, что также привело к значительному сокращению кода (я думаю, что модификация моего последнего ответа для учета последних в plannapus могла бы занять около 32 байт).
объяснение
Как и мои другие ответы, это просто подсчитывает количество различных совпадений регулярных выражений, но делает это намного эффективнее:
$
соответствует концу строки. Это всегда работает, даже если совпадение проходит до конца строки, так что это дает нам базовую линию1
для всех входных данных.}\{
находит одно совпадение во второй программе (Brain-Flak), увеличивая счет до2
. Обратная косая черта не обязательна для экранирования, но предотвращает сопоставление этой части регулярного выражения.[:'][^]']
на самом деле довольно необычно. Единственной целью является подсчет двух'
в программе APL (язык 3) и трех:
в программе JavaScript (язык 4), но мы должны предотвратить сопоставление этой части. Таким образом , мы также гарантируем , что следующий символ не является ни'
, ни]
(потому что те не появляются после того, как те , которые мы действительно хотим , чтобы соответствовать, но они появляются в этой программе здесь).'
От предыдущей части уже вызывает один матч в программах R, так что нам нужно еще три. Подстрока,1
появляется в обоих из них три раза, и ни в каких других программах. Мы сопоставляем его, добавляя тавтологическую границу между ними,,\b1
чтобы предотвратить повторное совпадение.источник
1
это просто вывод по умолчанию. Я должен сделать что-то об этом со следующим ответом.18. C (язык 10), 121 байт
Это стандарт C89 или C90. Он работает с clang или gcc в Try It Online.
Это печатает:
1
с ответами 1 , 5 , 7 , 9 и 14 (Retina).2
с ответом 2 (Brain-Flak).3
с ответом 3 (APL).4
с ответами 4 , 12 и 15 (Javascript).5
с ответами 6 и 8 (R).6
с ответами 10 и 17 (Баш).7
с ответом 11 (Mathematica).8
с ответом 13 (Python).9
с ответом 16 (Perl).10
с этим ответом (С).Вот драйвер bash, который запускает его со всеми 18 ответами на Попробуйте онлайн!
Ungolfed эквивалент (646 байт):
источник
5. Retina (язык 1), 23 байта
Попробуйте онлайн! (Проверяет все возможные входные данные.)
Подсчитывает совпадения разных вещей на входе:
^$
соответствует входной строке, то есть первый ответ один раз.{}
соответствует самому себе, которых во второй программе два, и один в этой.(?![⊂⍴])[⊂-⍴]
соответствует символам с кодовыми 8834 до 9076, эксклюзив , который находит три матча в третьей программе. Мы используем негативную перспективу, чтобы избежать совпадения концов диапазона в этой программе.\B=
соответствует,=
которому не предшествует символ слова. Это соответствует четырем из=
четвертой программы и не соответствует=
этой программе.источник
7. Сетчатка (язык 1), 27 байт
Попробуйте онлайн! (Проверяет все возможные входные данные.)
Незначительная модификация пятого ответа .
\B=
уже находит 4 совпадения в шестом ответе и\b5
находит другое без совпадения с любыми другими ответами.источник
4, JavaScript (ES6), 32 байта
Выходы 1 для пустого входа, 2, если вход начинается с a
{
, 4, если он начинается с a,s
и 3 в противном случае.источник
s[0]=='{'
наs[0]>'z'
11. Mathematica [язык 7], 53 байта
Безымянная функция, принимающая список символов в качестве аргумента и выводящая положительное целое число. Просто ответвляется на первую букву ввода, используя его положение в строке,
"^{'sceP"
чтобы принять решение о выводе. Это дает правильный ответ для всех предыдущих представлений, кроме начальной пустой программы Retina и самого последнего ответа Retina ; обе из этих ошибок, но вывод исправляется по правилу,/._@__->1
которое преобразует любую неоцененную функцию в1
.источник
16. Perl (язык 9), 94 байта
Попробуйте онлайн! (проверяет все ответы). Выходы "1234151516748149"
Это печатает:
Программа проверяет длину ввода и сопоставляет ее с текущим языковым распределением.
источник
6. R (язык 5), 61 байт
Проверяет, что является первым символом ввода и соответственно выбирает вывод.
Это таким образом печатает:
1
с ответами 1 и 5 (Retina).2
с ответом 2 (Brain-Flak).3
с ответом 3 (APL).4
с ответом 4 (Javascript).и
5
с этим ответом.Использование:
источник
8. R (язык 5), 76 байт
Проверяет первую букву ввода, и сравнивает его с вектором , содержащим (в указанном порядке) пустая строка,
{
,'
,s
иc
. Затем выводится индекс совпадения (индексирование R основано на 1) или 1, если совпадения нет.Та же концепция, что и в ответе № 6, но не позволяет ответу № 7 сопоставить его.
Это печатает:
1
с ответами 1 , 5 и 7 (Retina).2
с ответом 2 (Brain-Flak).3
с ответом 3 (APL).4
с ответом 4 (Javascript).и
5
с ответом 6 и этим ответом (R).Если я не ошибаюсь, допуск подсчета байтов для этого ответа составил 94 байта.
источник
readline
следует заменить наreadLines(file("stdin"))
. Что означает еще 16 символов: поэтому ответ 6 должен быть 77 байтов (из 79 разрешенных), а этот ответ - 92 байта (из 94 разрешенных). С этим изменением это работает и для онлайн переводчиков.12. Javascript (язык 4), 117 байт
Примечание: я изменил характер, чтобы исправить ошибку в этом.
Проверяет первую букву ввода, если это c, проверяет длину ввода.
Выходы:
источник
13. Python (язык 8), 110 байт
Примечание. Этот ответ был изменен через 6 часов после публикации по рекомендации ФП.
Это та же идея, что и в ответе 10 (в bash), но в Python 3. (Этот подход может работать не более чем с 3 записями, прежде чем мы исчерпаем шестнадцатеричные цифры.)
Это печатает:
1
с ответами 1 , 5 , 7 и 9 (Retina).2
с ответом 2 (Brain-Flak).3
с ответом 3 (APL).4
с ответами 4 и 12 (Javascript).5
с ответами 6 и 8 (R).6
с ответом 10 (Баш).7
с ответом 11 (Mathematica).8
для этого ответа (Python).Попробуйте онлайн! для: ответ 1 , ответ 2 , ответ 3 , ответ 4 , ответ 5 , ответ 6 , ответ 7 , ответ 8 , ответ 9 , ответ 10 , ответ 11 , ответ 11 , ответ 12 или этот ответ .
источник
24. Zsh (язык 11), 142 байта
Мой предыдущий ответ № 18 в Си все еще работает без изменений для всех последующих записей ( демо ). Итак, давайте немного перепутаем.
Цель комментария в конце состоит в том, чтобы соответствовать длине ответов 21 и 23, и убедиться, что ни один символ хэшей sha256 или sha384 не является уникальным для каждого ответа до сих пор, используя символы, проверенные ответами Lyth C ++. ;-)
Это печатает:
1
с ответами 1 , 5 , 7 , 9 и 14 (Retina).2
с ответом 2 (Brain-Flak).3
с ответом 3 (APL).4
с ответами 4 , 12 и 15 (Javascript).5
с ответами 6 и 8 (R).6
с ответами 10 , 17 , 20 и 22 (Баш).7
с ответами 11 и 19 (Mathematica).8
с ответом 13 (Python).9
с ответом 16 (Perl).10
с ответами 18 , 21 и 23 (C / C ++).11
с этим ответом (зш).Попробуйте онлайн!
источник
14. Retina (язык 1), 39 байт
Попробуйте онлайн! (Проверяет все действительные данные.)
источник
15. Javascript (язык 4), 108 байт
Golfed
источник
17. Bash (+ coreutils + openssl) (язык 6), 103 байта
Golfed
Использует ту же технику, что и мой ответ № 10 , но с закодированным в Base64 словарем вместо Hex .
Я собрал следующий файл данных для тестирования:
Тест
источник
19. Mathematica (язык 7), 96 байт
Безымянная функция, принимающая список символов в качестве входных данных и возвращающая целое число:
1
с ответами 1 , 5 , 7 , 9 и 14 (Retina).2
с ответом 2 (Brain-Flak).3
с ответом 3 (APL).4
с ответами 4 , 12 и 15 (Javascript).5
с ответами 6 и 8 (R).6
с ответами 10 и 17 (Баш).7
с ответом 11 и этим ответом (Mathematica).8
с ответом 13 (Python).9
с ответом 16 (Perl).10
с ответом 18 (С).До сих пор все длины ответов различны, и они даже различаются по модулю 59 - следовательно, можно определить, по какому целому числу в диапазоне 33, 34, ..., 91 они соответствуют (мод 59). Это все печатные символы ASCII, закодированные строкой
";NRU$ Q B [1: =L J, 5% 3 # >"
; с помощьюToCharacterCode@StringSplit@
превращает эту строку в список из десяти списков целых чисел в этом диапазоне иPosition[...,Mod[Length@#,59,33]][[1,1]]
находит, какой из десяти подсписков соответствует измененной длине ввода.источник
20. Bash (+ coreutils + openssl) (язык 6), 121 байт
Golfed
Тот же метод, что и в моем ответе № 17 (который, в свою очередь, основан на моем первоначальном ответе № 10 ).
Сейчас у нас 10 разных языков, и я переключился на шестнадцатеричное кодирование позиций.
Данные
Тест (выход)
источник
23. C (gcc) (язык 10), 142 байта
Попробуйте онлайн!
1
с ответами 1 , 5 , 7 , 9 и 14 (Retina).2
с ответом 2 (Brain-Flak).3
с ответом 3 (APL).4
с ответами 4 , 12 и 15 (Javascript).5
с ответами 6 и 8 (R).6
с ответами 10 , 17 , 20 и 22 (Баш).7
с ответом 11 и 19 (Mathematica).8
с ответом 13 (Python).9
с ответом 16 (Perl).10
с ответом 18 , 21 и этим ответом (с).Эта программа считает количество различных символов (в ASCII, поэтому многобайтовые символы UTF-8 разбиваются на несколько записей), а затем следует тщательно продуманному дереву решений, основываясь на количестве появлений того или иного символа.
Дерево решений не изменилось с # 21 (ууу!). Мне не разрешено публиковать точно такой же код, поэтому мы вернулись к чистому Си с небольшими изменениями.
источник
21. C ++ (gcc) (язык 10 как вариант C), 142 байта
Попробуйте онлайн!
1
с ответами 1 , 5 , 7 , 9 и 14 (Retina).2
с ответом 2 (Brain-Flak).3
с ответом 3 (APL).4
с ответами 4 , 12 и 15 (Javascript).5
с ответами 6 и 8 (R).6
с ответами 10 , 17 и 20 (Баш).7
с ответом 11 и 19 (Mathematica).8
с ответом 13 (Python).9
с ответом 16 (Perl).10
с ответом 18 и этим ответом (С).Эта программа считает количество различных символов (в ASCII, поэтому многобайтовые символы UTF-8 разбиваются на несколько записей), а затем следует тщательно продуманному дереву решений, основываясь на количестве появлений того или иного символа.
По мелочи : буква К не использовалась до этой записи. Буквы I, E, Y, j, k, q, z остаются неиспользованными.
источник
22. Bash (+ coreutils) [язык 6],
123131 байтРЕДАКТИРОВАТЬ: опубликовал неправильную версию вначале, должны быть исправлены сейчас.
Golfed
Та же техника, что и в моих ответах №20, №17 и №10 .
Данные
Тестовый забег
источник
44
?25. Bash (язык 6), 169 байт
Та же техника, что и в моих ответах № 22, № 20, № 17 и № 10 .
Извините @ Qwerp-Derp! ;) Обещаю, это последний :)
Golfed
Данные
Тестовый вывод
источник