Вы должны написать программу или функцию, которая получает положительное целое число в N
качестве входных данных и распечатывает первые N
символы вашего кода. Если N
он больше длины вашего кода, вы должны продолжать выводить его циклически.
Чтение вашего исходного кода любым способом и чтение из файла, stdio и т. Д. Запрещено.
Примеры
(при условии, что ваш код yourcode
)
Вход => Выход:
5
=> yourc
10
=> yourcodeyo
22
=>yourcodeyourcodeyour
осветление
Ваша программа должна быть длиной не менее 1 байта.
Ответы:
Python 2, 61 байт
Попробуйте онлайн!
источник
> <> , 49 байтов
Половина кода преобразует входные данные из строки в int. Если нам разрешено использовать кодовую точку одиночного символа, считанного из STDIN, то эта программа будет намного короче на 21 байт:
объяснение
Я буду использовать вторую программу для объяснения.
'
начинает анализ строки, нажимая каждый символ, пока не будет найдена заключительная кавычка. Поскольку остальная часть строки не имеет'
кавычек, каждый символ, кроме начального'
, помещается в стек.Но> <> - это тороидальный двумерный язык, поэтому после окончания строки указатель инструкции возвращается к началу,
'
снова нажимает на клавишу и останавливает синтаксический анализ строки. В результате мы выдвинули все необходимое, кроме первоначальной цитаты, а именно'
ASCII 39, поэтому мы нажимаем начальную кавычку нажатием3d* = 3*13 = 39
. Затем мы сдвигаем стек вправо (}
) и наоборот (r
), давая:Теперь мы все готовы начать печатать.
i
читает в символ ввода, но> <> символы в основном целые числа. В первой программеi
символ заменяется циклом, который преобразует цепочку цифр из STDIN в целое число.Затем мы выполняем следующий цикл, чтобы распечатать первые N символов:
источник
CJam,
34 1716 байтовЭто может быть много в гольф ..
Расширение кода :
Наконец, все, что в стеке, распечатывается в STDOUT автоматически
Попробуйте онлайн здесь
источник
Python 2, 117 байт
Подсказка жизни: не казни
list(itertools.cycle(x))
. По какой-то причине я не могу себе представить, почему, это сбивает переводчика.источник
itertools.cycle()
является бесконечным генератором, поэтому, если ваш компьютер не имеет бесконечной памяти, у вас будут проблемы :)JavaScript (ES6),
655250474139Использует ES6
repeat()
для клонирования кода, а затем срезает . Использует жестко закодированную длину.Старая версия (50):
Создает функцию
q
, принимая один параметр.Он преобразует в строку текст функции и рекурсивно вызывает функцию, если
n
ее длина превышает длину текста. В противном случае он возвращает подстроку текста.Версия не ES6 (65):
источник
.repeat
, для циклических требований было просто гениально.repeat()
позволил мне сократить его кучу, поэтому я использовал это вместо./39+1
? почему бы просто не оставить достаточно длинную строку?q=n=>('q='+q).repeat(n).slice(0,n)
отлично работает на firefoxJ - 24 символа
Принимает один положительный целочисленный аргумент и выплевывает строку.
У J нет никаких уловок самореференции, поэтому мы просто делаем это в духе Куайн. Объяснил взрывом:
Диадический
$
оператор в J циклически берет элементы из своего правого аргумента, чтобы соответствовать размерам, указанным слева. Когда измерение представляет собой одно число, это простой одномерный список символов, поэтому мы делаем именно то, что задает вопрос.Попробуйте сами на tryj.tk .
источник
quote
глагола?''''&,@(,&'''')@(#~ >:@(=&''''))
, или на английском языке, «удваивает любые'
символы, затем добавляет один в начало и конец». J использует Ada-подобные строковые литералы, так что это экранирует строку.k2 - 7 символов
В английском языке это функция с аргументом,
x
чье определение "x
take string self"._f
) является самой внутренней выполняемой в настоящее время функцией. Вот это функция{x#$_f}
.$
) преобразует свой аргумент в строку. В случае функции она создает строку с исходным определением функции.#
) принимает левые элементы из списка в правом аргументе . В случае строки элементы являются символами, поэтому мы делаем именно то, что нам нужно.Это не будет работать в Kona с открытым исходным кодом, потому что кажется, что он создает черные дыры, которые поглощают все попытки использовать их в качестве аргументов для чего-либо. Я не уверен в правильной семантике k3, но они, вероятно, не намного добрее.
В Q это
{x#string .z.s}
и в k4{x#2_$.z.s}
. Мы должны использовать,2_
чтобы отбросить два начальных символа в k4, по причинам, которые может любить только мать.источник
Рубин,
66 6463 байтаТо же самое с использованием функции, позволяющей избежать вызова,
gets
немного длиннее (81 байт):Лямбда-версии одинаковы по 69 и 65 байт:
источник
.cycle
аккуратно, я должен помнить это. :) Вы, вероятно, можете сократить.join
до*''
.String#format
вместо интерполяции:eval s="$><<('eval s=%p'%s).chars.cycle.take(gets.to_i)*''"
Mathematica, 65 байт
Все пробелы необходимы, чтобы сделать это должным образом, включая завершающий. Это чистая функция, которую вы можете использовать следующим образом:
какие отпечатки
К сожалению, применение
ToString
к функции не уступает в точности так , как вы ввели функцию, поэтому я не могу сократить это путем удаления пробелов, сокращения#1
до#
или используя префикс нотацию для вызова функции.источник
#
до#1
»?MATLAB,
319141 символовМне удалось выжать несколько байтов из исходного:
источник
JavaScript, 34 байта
Рекурсивная функция, которая повторяет код
n
раз, а затем разрезает результат.источник
Japt , 2 байта
Попробуйте онлайн!
Первый
î
- это числовой метод, который принимает один параметр и повторяет его до длиныn
. Потому что это первый метод,n
становится входом. Второйî
бросается в строку и повторяется.Это переносится на:
n.î("î")
-> Повторите,"î"
пока не достигнет длиныn
8-байтовое решение
Попробуйте онлайн!
îQi"îQi"
переносится вn.î(Qi"îQi")
источник
R 203 байта
Когда N = 203, код полностью печатает сам.
Когда N = 50, код обрезается.
Когда N = 300, код частично повторяется.
источник
(f=function(N){s=paste0("(f=",paste0(capture.output(f),collapse=""),")");cat(rep(s,N%/%nchar(s)),substr(s,1,N%%nchar(s)),sep="")})(200)
Матлаб (57)
Начальный
1
индекс (вместо0
) в последней строке объясняется тем, что функция Matlabtype
вводит начальный перевод строки, который следует удалить. Спасибо Деннису за его исправление (последний индекс) и за его предложение (nnz
корочеnumel
).источник
-1
). - Я думаю , вы также можете удалить вторую строку и выгрузитьnumel
дляnnz
.type f
часть не противоречит требованию Чтение вашего исходного кода каким-либо образом и чтение из файла, stdio и т. Д. Запрещено ?type
вероятно, получает доступ к жесткому диску. Как вы думаете, я должен удалить ответ?mod
Между прочим, я украл твою -индексированную идею.)Унарный (1-8 версия) , 23855 байт
Принимает ввод как унарный из '1', а код 23855 '1 (
,[.,]
)источник
Japt ,
4028 байтПервый раз пишу квайн, так что это, вероятно, можно немного сократить. С другой стороны, я очень рад, что заставил его работать.
Начальная новая строка является преднамеренной, вторая строка представляет собой данные, а остальная часть разворачивает данные, а затем повторяет всю полученную строку, пока не достигнет длины, равной вводу.
Спасибо Оливеру за грандиозные 12 байтов .
Попробуйте онлайн!
источник
tTU
на¯U
и использоватьî
вместоp
, переместив его вперед: Попробуйте онлайнîR+Q+V+Q+R+V
должно работать просто отлично.î
, это очень удобно. Большое спасибо!С ++, 305
Пояснение Кроме символа выхода все остальные символы выводятся на печать. Метод main находится внутри строки s, а внутри main строится полная строка и печатается в stdout
источник
Pyth,
151314 байтовПопробуйте онлайн!
Модифицированная версия стандартного Pyth Quine .
источник
<jN*Q]"<jN*Q]<jN*Q]"<jN*Q]<jN
не так?<jN*Q]"<jN*Q]"
кажется работа?Хун , 185 байт
Установите
f
код программы в виде ленты, но с «k» для себя. Разбейте ленту на символ 5, устанавливая переменные[p=left q=right]
. Соедините строкиp
, оригинальную строкуf
и все после первого символаq
. Повторите эту строкуn
раз, а затем верните первыеn
символы.Делать это было немного затруднено из-за того, что stdlib Хуна не имеет функции форматирования или поиска и замены ... Кроме того, я не уверен, зачем нам нужен еще один приведение после
scag
, так как он должен хранить информацию о типе. Такие вот дела.источник
Jstx , 7 байт
Попробуйте онлайн!
источник
Perl 5 с
-pa
, 48 байтПопробуйте онлайн!
источник
Gol> <> , 12 байт
Попробуйте онлайн!
Как это устроено
k
может оборачиваться любое количество раз, поэтому нам не нужно дублировать весь стек в зависимости от ввода.источник
SmileBASIC,
10666 байтисточник
KSFTgolf - 4 символа , 6 байтов
KSFTgolf - язык, который я пытался разработать для гольф-кода. Я сильно изменил это, так что это, вероятно, не должно учитываться.
источник
☃
коду, который полностью выглядит как что-то, что было специально сделано для этой задачи (поскольку во всем вашем файле нет других блоков кода на основе юникода).Stax , 24 байта
Запустите и отладьте его
Адаптация
"34bL"34bL
квайн.источник
J, 41 байт
Теперь это была головоломка!
Объяснение:
Примеры:
источник
Ly , 28 байт
Попробуйте онлайн!
источник
Java 10,
193176 байтОбъяснение:
Попробуйте онлайн.
Куайн -часть:
var s
Содержит исходный код отформатирован.%s
используется для ввода этой строки в себя сs.format(...)
.%c
,%1$c
И34
используются для форматирования двойных кавычек.s.format(s,34,s)
складывает все это вместе.Задание часть:
for(int i=n;i>n;i/=176)
петлиceil(n/176)
раз, где176
длина исходного кода.s+=s;
экспоненциально увеличивает размер исходного кода String. (ab
становитсяabab
;abab
становитсяabababab
;abababab
становитсяabababababababab
; и т. д.)s.subtring(0,n);
принимает первыеn
символы строки.источник
> <> ,
2219 байтПопробуйте онлайн!
Принимает ввод через
-v
флаг.источник
Stax , 8 байт
Запустите и отладьте его
источник