Генерация программ, которые печатают в n раз больше


16

Если задано неотрицательное целое число n, ваше решение должно вывести программу на выбранном вами языке, количество выходных данных которой в nразы превышает количество байт.

правила

  • Вы должны указать язык и кодировку программ, которые выводит ваше решение, и вы не можете выбирать разные языки или кодировки для разных входов вашего решения. Язык вашей программы вывода может совпадать или не совпадать с языком вашего решения.
  • Ваша заявка должна обрабатывать только целые числа в диапазоне вашего языка, но, пожалуйста, не злоупотребляйте этим правилом.

Это поэтому выигрывает самая короткая подача в байтах.

пример

Предположим, nэто 4. Мое решение затем выводит f_8программу, которая на моем (мнимом) языке выводит j3 1s+/2]!mz. Выход программы имеет длину 3, а выход 3 * 4 = 12, поэтому решение является правильным для входа 4.

Предположим, что вместо этого n1 и выходные данные моей программы ffffpfpffp(10 байт). Программа ffffpfpffpна моем выбранном языке должна выдавать 10 * 1 = 10 байт.


На данный момент это довольно мало указано. Не могли бы вы привести несколько примеров?
DJMcMayhem

3
Я думаю, что знаю, что мы должны делать, но каждый раз, когда я читаю спецификацию, я становлюсь менее уверенным. вывод некоторого текста, который имеет в n раз больше байтов, чем выводимая программа, по- видимому, подразумевает, что мы должны вывести текст и программу. Набор символов и язык должны быть согласованы для всех целых чисел. К какому «набору символов» это относится?
Деннис

Nevermind, я на самом деле сделал неправильно, и так сделал все , но один из ответов.
Деннис

1
@Dennis Это не помогает, что название, кажется, противоречит телу. Возможно, лучше вывести программу, которая выдает n раз больше длины , если я правильно понимаю задачу (я не уверен, что понимаю)
Сизиф

1
Можем ли мы взять nв качестве строки?
Лохматый

Ответы:


7

JavaScript (ES6), 38 байт

n=>`(x="${n}")=>(x+1/7+1e9).repeat(x)`

демонстрация



3

брейкфук , 348 байт

--[>+<++++++]>>--[>+<++++++]>++[-<+>]----[>+<----]>---[-<+>]----[>+<----]>-[-<+>]-[>+<---]>++++++[-<+>]-[>+<---]>++++++++[-<+>]--[>+<++++++]>+++[-<+>]<[<],[->.<]>>>>>.<<<.>>.<<<.>>>.<<<.>>>.<<<.>>...>>>.<<....<<.>>>.<<..<<.>>>..<<.......>>>>.<<<..<<.>.....>>>.<<.>>.>>.<<<<<.>>>>.<<.<<.>>.>.<<<.>>.<<<.>>...<<.>>>..>>.<<.>.<<<.>.<<.>>>.>>.<<<..>>>.

Попробуйте онлайн! Или посмотрите версию Ungolfed (то есть, с чем мне пришлось работать)


отказ

Я потратил больше времени на то, чтобы сделать это, чем я думал, по-человечески возможно. Я хотел бы поблагодарить мою девушку за то, что она позволила мне бросить ее работать над этим; а также мой спаситель .

Как это вообще работает?

Понятия не имею.

Как это работает?

У всех выходных данных есть завершающий фрагмент кода, который одинаков:

[->+>+>+<<<]>>>>-[<<+>>-------]<<+-----[<[.-]>->[->+<<<+>>]>[-<+>]<<]

Давайте разделим его на три части под названием a,b,c

a : [->+>+>+<<<]>>>>               THE DUPLICATOR
b : -[<<+>>-------]<<+-----        THE ADJUSTER
c : [<[.-]>->[->+<<<+>>]>[-<+>]<<] THE PRINTER

Ввод iпросто прикреплен к передней части в унарном виде:

iabc

(например, если вход был 10, то i = '++++++++++')

Дубликатор - Разбивает входные данные на два идентичных числа m, n, эквивалентных входным

Настройщик - Настраивает так n, чтобы он равнялся длине программы

Принтер - печатает m*nсимволы ASCII


Обратите внимание, что в этом примере входное значение равно a newline, что в качестве значения ASCII равно 10, поэтому входное значение равно 10. Если вы хотите проверить другие небольшие числа, замените их на ,сколько +угодно.


2

Чеддер , 10 9 байтов

(*)&" "*9

Неловкий протонный полиглот> _ <


+1 для Полиглота Протона с Чеддером, чтобы показать вдохновение: D
HyperNeutrino


1

Python 3 -> HQ9 +, 11 байт

'Q'.__mul__

Это должно быть сделано

Попробуйте онлайн!


Где я могу проверить HQ?
Тит

1
Ну, Qпросто печатает свой собственный исходный код. Вы можете проверить это здесь: hq9plus.alwaysdata.net . Это никогда не должно было быть серьезной записью
michi7x7

Это не работает Если я ввожу 1, то вы выводите Q, что в свою очередь выводит Q. Qимеет длину 1, но ваш код имеет длину 11.
NoOneIsHere

@NoOneIsHere ', чей вывод имеет в n раз больше байтов, чем выводимая программа.' (не представленная программа)
michi7x7

1
@NoOneIsЗдесь это не так: almnet.de/esolang/hq9plus.php (Спецификация языка гласит: «Печатает весь текст файла с исходным кодом»)
michi7x7

1

Java 8, 175 174 байта

interface M{static void main(String[]a){System.out.printf("interface M{static void main(String[]a){int i=(88+%s)*%s;for(;i-->0;System.out.print(0));}}",a[0].length(),a[0]);}}

Примеры:

n=1выходы :

interface M{static void main(String[]a){int i=(88+1)*1;for(;i-->0;System.out.print(0));}}

(длина = 89), который выводит 89 нулей :

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

n=10выходы :

interface M{static void main(String[]a){int i=(88+2)*10;for(;i-->0;System.out.print(0));}}

(длина = 90), которая выводит 900 нулей :

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

n=100выходы :

interface M{static void main(String[]a){int i=(88+3)*100;for(;i-->0;System.out.print(0));}}

(длина = 91), который выводит 9100 нулей :

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Объяснение:

interface M{                                // Class:
  static void main(String[]a){              //  Mandatory main method
    System.out.printf("interface M{static void main(String[]a){
                                            //   Print a new program with:
      int i=(88+%s)*%s;                     //    Integer containing (88*A)+B
      for(;i-->0;System.out.print(0));}}",  //    And print that many zeroes
        a[0].length(),                      //     Where A is the length of the number
                                            //     (0-9 = 1; 10-99 = 2; 100-999 = 3; etc.)
        a[0]);}}                            //     and B is the number itself

0

RProgN 2 , 7 5 байт

«•.* 

С замыкающим пробелом

Разъяснения

«•.* 
«    # Yield a function from the remaining string.
 •.  # Append a space and stringify, which builds the original program (Because stringifying a function removes noops, which spaces are)
   * # Repeat the implicit input times.

Попробуйте онлайн!


0

CJam, 8 13 байт

q_,S\" 8+*S*"

Попробуйте онлайн

Сгенерированная программа выводит пробелы, так что это сложно сказать.


Я думаю, что это единственный ответ, который интерпретирует часть о выводе программы, которая правильно выводит текст, но соотношение отключено, если на входе более одной цифры.
Деннис

О да, да.,
геокавель


0

Python → TECO, 20 байтов

Ответ в Python, а сгенерированный код в TECO. Python - это функция, возвращающая nVV12345\VV повторений . Смотрите здесь для объяснения TECO.

'VV12345\VV'.__mul__

0

PHP, 47 + 1 байт

<?="<?=str_pad(_,",strlen($argn)+18,"*$argn);";

печатает одно подчеркивание с последующими пробелами.
Беги как труба с -F; запустить выведенную программу с помощью -fили -F.

Это не удастся для ввода с более чем 64 цифрами,
что намного выше, чем PHP_INT_MAX(в настоящее время).

Тем не менее, он не PHP_INT_MAXподходит для ввода больше -18 ... он все еще соответствует?


@HyperNeutrino: это не удастся для ввода больше, чем PHP_INT_MAX -18. Это дисквалифицирует?
Тит

Нет, я скажу, что это хорошо :)
HyperNeutrino

0

PHP → Python 2, 40 + 1 байт

print "A"*<?=13+strlen($argn),"*",$argn;

печатает программу Python, которая печатает повторные As. Беги как труба с -F.


0

Пакетная обработка → Древесный уголь, 22 байта

Я не уверен, какую кодировку мне следует использовать, поскольку это байты. Вот байты, интерпретируемые как Windows-1252:

@set/p=Á%1ñªÉñ«Ìñ¹<nul

Те же байты, что и у PC-850:

@set/p=┴%1±¬╔±½╠±╣<nul

Те же байты в кодовой странице Charcoal:

@set/p=A%1θ×Iθ⁺Lθ⁹<nul

Полученная программа Charcoal имеет Plus(Length(Cast(n)), 9)длину в байты:

A       Assign
 %1      (String representation of n)
   θ      To variable q
        Implicitly print a number of `-`s equal to:
×        Product of:
 Iθ       Cast of q to integer
 ⁺        Sum of:
  Lθ       Length of q
  ⁹        Integer constant 9


0

JavaScript (ES8), 43 41 39 байт

n=>`f=_=>"".padEnd(${n}*(88+f).length)`

Проверь это

Результатом сгенерированной функции является строка пробелов, которые *в этом фрагменте заменены на s.

g=
n=>`f=_=>"".padEnd(${n}*(88+f).length)`

o.innerText=(h=n=>`Function: ${x=g(n)}\nLength:   ${x.length}\nOutput:   "${x=eval(x)().replace(/./g,"*")}"\nLength:   `+x.length)(i.value=10);oninput=_=>o.innerText=h(+i.value)
<input id=i type=number><pre id=o>


0

R , 46 байт

function(n)sprintf("cat(rep('a',%d*23),'')",n)

Попробуйте онлайн!

Анонимная функция, которая возвращает строку

cat(rep('a',n*23),'')

Какие отпечатки a( aпосле пробела) 23 nраза. Мне нужно, ''потому что в противном catслучае не будет печатать последний пробел.


0

C 94 байта

main(int c,char**a){if(c>1){c=atoi(a[1]);if(c>0&&c<0xFFFFFF){c*=94;while(c--)printf("r");}}}

это будет 94 байта, включая последний \ n, на котором стандартный c говорит, что он должен быть записан. вернуть как 'r' символы как (длина программы) * (аргумент программы), если аргумент программы не существует, или это <= 0, или это> 0xFFFFF.

C:\>nameProg.exe 1
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

0

MATLAB (63 байта)

a=@(n)['repmat(''a'',1,',num2str(n*(15+numel(num2str(n)))),')']

Например:

>> a(5)

ans =

repmat('a',1,80)

и:

>> repmat('a',1,80)

ans =

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.