Generuj programy, które drukują n razy ich długość

16

Biorąc pod uwagę nieujemną liczbę całkowitą n, twoje rozwiązanie musi wypisać program w wybranym przez ciebie języku, którego wyjście ma ntyle razy bajtów, ile wyprowadzony program.

Zasady

  • Musisz określić język i kodowanie programów generowanych przez rozwiązanie i nie możesz wybierać różnych języków lub kodowań dla różnych danych wejściowych dla swojego rozwiązania. Język twojego programu wyjściowego może, ale nie musi być taki sam, jak język twojego rozwiązania.
  • Twoje zgłoszenie musi obsługiwać liczby całkowite z zakresu Twojego języka, ale nie nadużywaj tej zasady.

To jest więc wygrywa najkrótsze przesłanie w bajtach.

Przykład

Załóżmy, że n4. Moje rozwiązanie wypisuje następnie f_8program, który w moim (urojonym) języku wypisuje j3 1s+/2]!mz. Wyjście programu ma długość 3, a jego wyjście ma długość 3 * 4 = 12, więc rozwiązanie jest poprawne dla wejścia 4.

Załóżmy, że zamiast tego njest to 1, a mój program wyprowadza ffffpfpffp(10 bajtów). Program ffffpfpffpw moim wybranym języku musiałby wygenerować wynik 10 * 1 = 10 bajtów.

HyperNeutrino
źródło
W tej chwili jest to dość nieokreślone. Czy możesz podać jakieś przykłady?
DJMcMayhem
3
Myślę , że wiem, co powinniśmy zrobić, ale za każdym razem, gdy czytam specyfikację, jestem coraz mniej pewny. wypisuje tekst, który ma n razy więcej bajtów, niż wydaje się, że wyprowadzony program sugeruje, że musimy wypisać tekst i program. Zestaw znaków i język muszą być spójne dla wszystkich liczb całkowitych. Do którego „zestawu znaków” to odnosi się?
Dennis
Nevermind, ja rzeczywiście zrobił źle zrozumieć, tak jak i wszystkich, ale jedną z odpowiedzi.
Dennis
1
@Dennis Nie pomaga to, że tytuł wydaje się zaprzeczać ciału. Być może wypisz program, który wypisuje n razy jego długość, byłby lepszym tytułem, jeśli dobrze rozumiem wyzwanie (nie jestem pewien, czy tak)
Syzyf
1
Czy możemy wziąć nza sznurek?
Kudłaty

Odpowiedzi:

7

JavaScript (ES6), 38 bajtów

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

Próbny

Arnauld
źródło
3

pieprzenie mózgu , 348 bajtów

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

Wypróbuj online! Lub zobacz wersję Ungolfed (tj. Z czym musiałem pracować)


Zrzeczenie się

Spędziłem więcej czasu na robieniu tego, niż myślałem, że to po ludzku możliwe. Chciałbym podziękować mojej dziewczynie za to, że pozwoliłem jej rzucić ją do pracy; jak również mój wybawca .

Jak to w ogóle działa?

Bladego pojęcia.

Jak to działa

Wszystkie dane wyjściowe mają końcowy fragment kodu, które są takie same:

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

Podzielmy to na trzy części zwane a,b,c

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

Dane wejściowe isą po prostu przekazywane jednostronnie:

iabc

(np. jeśli wejście było 10, to i = '++++++++++')

Powielacz - dzieli dane wejściowe na dwie identyczne liczby m, n, równoważne z danymi wejściowymi

Dostrajacz - dostosowuje się ntak, aby był równy długości programu

Drukarka - drukuje m*nznaki ASCII


Zauważ, że dane wejściowe w tym przykładzie to a newline, które jako wartość ASCII wynosząca 10, dlatego dane wejściowe to 10. Jeśli chcesz przetestować inne małe liczby, zamień na ,tyle +, ile chcesz.

Grawiton
źródło
2

Cheddar , 10 9 bajtów

(*)&" "*9

Niezręczny poliglot protonowy> _ <

Downgoat
źródło
+1 dla protonowego poliglota z Cheddarem, aby pokazać inspirację: D
HyperNeutrino
2

Haskell , 55 bajtów

f n=(++)<*>show$"main=putStr$[1.."++show n++"*2]>>'#':"

Wypróbuj online! Przykładowe użycie: f 1zwraca następujący 54 bajtowy program:

main=putStr$[1..1*2]>>'#':"main=putStr$[1..1*2]>>'#':"

Wypróbuj online! co daje następujący wynik 54 bajtów:

#main=putStr$[1..1*2]>>'#':#main=putStr$[1..1*2]>>'#':
Laikoni
źródło
1

Python 3 -> HQ9 +, 11 bajtów

'Q'.__mul__

To musiało być zrobione

Wypróbuj online!

michi7x7
źródło
Gdzie mogę przetestować kwaterę główną?
Tytus
1
Po Qprostu drukuje własny kod źródłowy. Możesz to sprawdzić tutaj: hq9plus.alwaysdata.net . To nigdy nie miało być poważnym wejściem
michi7x7
To nie działa Jeśli wejdę 1, to wyprowadzicie Q, co z kolei wyprowadzi Q. Qma długość 1, ale twój kod ma długość 11.
NoOneIsHere
@NoOneIsHere „którego dane wyjściowe mają n razy więcej bajtów niż program wyjściowy”. (nie przesłany program)
michi7x7
1
@NoOneIs Tutaj nie jest to możliwe: almnet.de/esolang/hq9plus.php (specyfikacja języka mówi tylko: „Drukuje cały tekst pliku kodu źródłowego”)
michi7x7 19.09.17
1

Java 8, 175 174 bajtów

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]);}}

Przykłady:

n=1wyjścia :

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

(długość = 89), która generuje 89 zer :

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

n=10wyjścia :

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

(długość = 90), która generuje 900 zer :

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

n=100wyjścia :

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

(długość = 91), która generuje 9100 zer :

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Wyjaśnienie:

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
Kevin Cruijssen
źródło
0

RProgN 2 , 7 5 bajtów

«•.* 

Z końcową spacją

Wyjaśniono

«•.* 
«    # 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.

Wypróbuj online!

ATaco
źródło
0

CJam, 8 13 bajtów

q_,S\" 8+*S*"

Wypróbuj online

Wygenerowany program generuje spacje, więc trudno powiedzieć.

geokavel
źródło
Myślę, że to jedyna odpowiedź, która interpretuje część dotyczącą wypisywania programu, który poprawnie wypisuje tekst, ale stosunek jest wyłączony, jeśli wejście ma więcej niż jedną cyfrę.
Dennis
O tak, duh.
geokavel
0

Ly , 29 bajtów

"\"9>("&onu")[<&s&ol>1-]<;"&o

Wypróbuj online! (obecnie nie działa z powodu błędu przetwarzania wstępnego) Wszystko dobrze!

LyricLy
źródło
0

Python → TECO, 20 bajtów

Odpowiedź znajduje się w Pythonie, podczas gdy wygenerowany kod jest w TECO. Python jest funkcją zwracającą VV12345\VVpowtarzane n razy. Zobacz tutaj wyjaśnienie TECO.

'VV12345\VV'.__mul__
feersum
źródło
0

PHP, 47 + 1 bajtów

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

drukuje jeden znak podkreślenia, a następnie spacje.
Uruchom jako potok z -F; uruchom wyprowadzony program za pomocą -flub -F.

To nie powiedzie się przy wprowadzaniu więcej niż 64 cyfr,
czyli o wiele więcej niż PHP_INT_MAX(obecnie).

Jednak nie powiedzie się dla danych wejściowych większych niż PHP_INT_MAX-18 ... czy nadal się kwalifikuje?

Tytus
źródło
@HyperNeutrino: To nie powiedzie się dla danych wejściowych większych niż PHP_INT_MAX-18. Czy to dyskwalifikuje?
Tytus
Nie, powiem, że to w porządku :)
HyperNeutrino,
0

PHP → Python 2, 40 + 1 bajtów

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

wypisuje program Python, który drukuje powtarzane As. Uruchom jako potok z -F.

Tytus
źródło
0

Partia → Węgiel drzewny, 22 bajty

Nie jestem pewien, jakiego kodowania powinienem użyć, ponieważ są to bajty. Oto bajty interpretowane jako Windows-1252:

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

Te same bajty, co PC-850:

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

Te same bajty na stronie kodowej Charcoal:

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

Wynikowy program Charcoal ma Plus(Length(Cast(n)), 9)bajty długości:

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
Neil
źródło
0

JavaScript (ES8), 43 41 39 bajtów

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

Sprawdź to

Dane wyjściowe wygenerowanej funkcji jest ciągiem spacji, które są zastąpione przez *s w tym fragmencie.

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>

Kudłaty
źródło
0

R , 46 bajtów

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

Wypróbuj online!

Anonimowa funkcja zwracająca ciąg

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

Które wydruki a( apo których następuje spacja) 23 nrazy. Potrzebowałem, ''ponieważ inaczej catnie wydrukowałbym ostatniego znaku spacji.

Giuseppe
źródło
0

C, 94 bajty

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

będą to 94 bajty, w tym ostatni \ n, który na C oznacza, że ​​powinien być napisany. zwróć jako znaki „r” jako (długość programu) * (argument programu), jeśli argument programu nie istnieje lub jest <= 0 lub jest> 0xFFFFF nic nie drukuj

C:\>nameProg.exe 1
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
RosLuP
źródło
0

MATLAB (63 bajty)

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

Na przykład:

>> a(5)

ans =

repmat('a',1,80)

i:

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

ans =

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
PieCot
źródło