Код Гольф
Совершенно реальная предыстория: я работаю над веб-сайтом www. Sky.Net и одна из наших задач - создать какую-то самоосознающую программу или что-то в этом роде, я не знаю, не особо ли я слушал босса. В любом случае, чтобы сделать наш код более осведомленным, нам нужно, чтобы ИТ-специалисты знали, какой код находится на каждом номере строки.
Вызов
Создайте программу или функцию, которая принимает входные данные n
и возвращает код указанной программы или функции в режиме онлайн n
.
правила
Program Ваша программа или функция должна быть длиной не менее 4 строк. Каждая строка должна быть уникальной.
➋ Вы можете предположить, что ввод всегда будет положительным целым числом, большим или равным 1 и меньшим или равным количеству строк в вашей программе / функции.
Line Первая строка в вашей программе / функции - это строка 1, а не строка 0.
➍ Вы не можете получить доступ к файлу, в котором находится ваша программа. (Если кто-то должен спросить «Разве это не технически нарушающее правило № 4?
➎ Строки не могут быть пустыми (включая пробел, если пробелы ничего не делают на вашем языке)
➏ Строки не могут быть // комментариями (/ * любого стиля <!)
Это задача, похожая на квинну.
Это код-гольф , поэтому выигрывает подача с наименьшим количеством байтов!
Ответы:
Vim, 7 байт
Попробуйте онлайн!
Насколько я могу судить, это соответствует всем правилам. В vim по умолчанию пустая программа распечатывает все введенные данные. поскольку
Является noop, ничего не меняет входной текст, и поскольку каждый ввод соответствует желаемому выводу, этот же подход работает с любым количеством строк.
источник
Рубин,
717066 байтПопробуйте онлайн!
Режим "читерства": 7 + 1 = 8 байт
Требуется
-p
флаг +1 байт. Буквально копия V ответа . Печатает введенное число; вся программа фактически бездействует.источник
-p
?$_
, запускать содержимое программы, а затем печатать содержимое$_
на экране (повторяя для каждой строки STDIN). Поскольку программа ничего не делает, это практически просто Unixcat
, но это означает, что каждый ввод от 1 до 4 будет выводить содержимое строки, потому что каждая строка буквально является ее номером строки.-p
, но1\n2\n3\n4
не является допустимой программой Perl.Haskell,
6959 байтОсновано на стандартном кваске Хаскеля. Первое выражение (распределенное по первым трем строкам) - это неназванная функция, которая выбирает n-ю строку из квинифицированной строки
s
(s++show s
). +2 байта для создания индексации на основе 1 (imho ненужное правило).Для Попробуйте это онлайн! Версия я должен назвать функцию, которая добавляет 4 байта.
источник
PowerShell ,
184172 байтаПопробуйте онлайн!
объяснение
Начинается с создания массива
$v
в первой строке. В этой же строке первый (0
th) элемент установлен в значение0
, и запятая,
продолжает свое определение.Следующая строка устанавливает следующий элемент (
1
) массива в строку, представляющую содержимое первой строки сценария, так что$v[1]
возвращается первая строка.3-я строка сначала устанавливает 3-й элемент массива (индекс
2
) в строку, представляющую 2-ю строку скрипта, затем в той же строке устанавливает 4-й элемент (индекс3
), используя фрагмент кода quine, который использует оператор формата (-f
) для замены некоторые экземпляры одиночных кавычек ([char]39
) и строки шаблона формата в себя, чтобы воспроизвести всю 3-ю строку.Строка 4 в основном делает то же самое, но также завершает создание массива и затем индексирует его, используя предоставленный аргумент.
источник
Python 2,
1047367 байтСпасибо Джонатану Аллану за сохранение 6 байтов!
Изменить: Тот же счетчик байтов, но мне больше нравится это решение
Попробуйте онлайн!
Python-версия Ruby-ответа Value Ink .
Старый ответ (67 байт):
источник
n
: TIOCJam ,
191817 байтовПопробуйте онлайн!
Основано на стандарте CJam-quine.
{...}_~
Бежит...
с самого блока на стеке (и в этом случае, а также1
ниже). Тогда мы делаем:источник
PHP, 261 байт
Попробуйте онлайн!
Кодированная строка:
источник
Perl, 52 байта
Это простая вариация классической квины
«Полезная нагрузка» находится
split
на новых строках, и правильная строка выбирается путем индексации в результирующем списке.Perl,
4948 байт (не конкурирует)38 байтов для кода (исключая шебанг, но включая
-d:A
) плюс 10 байтов для имени файла, которое должно бытьDevel/A.pm
.Devel
Каталог должен быть@INC
.Технически, это нарушает Правило № 4, потому что
-d:A
вызывает двойной анализ файла, поэтому это неконкурентное решение.Он использует ловушку отладчика для доступа к строкам файла, которые Perl хранит в
@{"_<$filename"}
массиве во время компиляции.источник