Hasilkan program yang mencetak n kali panjangnya

16

Diberikan bilangan bulat negatif n, solusi Anda harus menampilkan sebuah program dalam bahasa yang Anda pilih yang outputnya memiliki nbyte sebanyak kali lipat dari program yang dihasilkan .

Aturan

  • Anda harus menentukan bahasa dan penyandian program yang dihasilkan oleh solusi Anda, dan Anda tidak boleh memilih bahasa atau penyandian yang berbeda untuk input yang berbeda untuk solusi Anda. Bahasa program output Anda mungkin atau mungkin tidak sama dengan bahasa solusi Anda.
  • Kiriman Anda hanya perlu menangani bilangan bulat dalam rentang bahasa Anda, tetapi jangan menyalahgunakan aturan ini.

Ini adalah sehingga pengiriman terpendek dalam byte menang.

Contoh

Misalkan nadalah 4. Solusi saya kemudian output f_8, sebuah program yang, dalam output bahasa (imajiner) saya j3 1s+/2]!mz. Output program memiliki panjang 3 dan outputnya memiliki panjang 3 * 4 = 12, sehingga solusinya benar untuk input 4.

Misalkan sebaliknya itu nadalah 1 dan output program saya ffffpfpffp(10 byte). Program ffffpfpffpdalam bahasa pilihan saya harus menghasilkan output 10 * 1 = 10 byte.

HyperNeutrino
sumber
Saat ini, ini sangat tidak spesifik. Bisakah Anda memberikan beberapa contoh?
DJMcMayhem
3
Saya pikir saya tahu apa yang harus kami lakukan, tetapi setiap kali saya membaca spec, saya menjadi kurang yakin. output beberapa teks yang memiliki n kali lebih banyak byte daripada program yang dihasilkan tampaknya menyiratkan bahwa kita harus menampilkan teks dan program. Set karakter dan bahasa harus konsisten untuk semua bilangan bulat. "Kumpulan karakter" apa yang dimaksud dengan ini?
Dennis
Bagaimanapun , saya benar - benar salah paham, dan begitu pula semua kecuali salah satu jawabannya.
Dennis
1
@ Dennis Tidak membantu bahwa judul tersebut tampaknya bertentangan dengan tubuh. Mungkin Keluarkan program yang menghasilkan n kali panjangnya akan menjadi judul yang lebih baik, jika saya memahami tantangan dengan benar (saya tidak yakin saya melakukannya)
Sisyphus
1
Bisakah kita menganggapnya nstring?
Shaggy

Jawaban:

7

JavaScript (ES6), 38 byte

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

Demo

Arnauld
sumber
3

brainfuck , 348 byte

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

Cobalah online! Atau lihat versi Ungolfed (yaitu apa yang harus saya kerjakan)


Penolakan

Saya menghabiskan lebih banyak waktu untuk membuat ini daripada yang saya pikir mungkin secara manusiawi. Saya ingin mengucapkan terima kasih kepada pacar saya karena mengizinkan saya untuk membuangnya untuk mengerjakan ini; serta penyelamat saya .

Bagaimana cara kerjanya?

Tidak tahu.

Bagaimana cara kerjanya?

Semua output memiliki cuplikan kode tambahan yang semuanya sama:

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

Mari kita bagi menjadi tiga bagian yang disebut a,b,c

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

Input ihanya ditempelkan ke depan di unary:

iabc

(misalnya; jika inputnya 10, maka i = '++++++++++')

Duplikator - Membagi input menjadi dua angka yang identik m, n, setara dengan input

Adjuster - Menyesuaikan nsedemikian rupa sehingga sama dengan panjang program

Printer - Mencetak m*nkarakter ASCII


Perhatikan bahwa input dalam contoh adalah a newline, yang sebagai nilai ASCII 10, oleh karena itu inputnya adalah 10. Jika Anda ingin menguji angka kecil lainnya, gantilah ,dengan sebanyak +apa pun keinginan Anda.

Graviton
sumber
2

Cheddar , 10 9 byte

(*)&" "*9

Poliglot Proton yang canggung> _ <

Downgoat
sumber
+1 untuk Proton polyglot dengan Cheddar untuk menunjukkan inspirasi: D
HyperNeutrino
2

Haskell , 55 byte

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

Cobalah online! Contoh penggunaan: f 1menghasilkan program 54 byte berikut:

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

Cobalah online! yang menghasilkan output 54 byte berikut:

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

Python 3 -> HQ9 +, 11 byte

'Q'.__mul__

Itu harus dilakukan

Cobalah online!

michi7x7
sumber
Di mana saya bisa menguji HQ?
Titus
1
Nah, Qcetak saja kode sumbernya sendiri. Anda dapat mengujinya di sini: hq9plus.alwaysdata.net . Ini tidak pernah dianggap sebagai entri serius
michi7x7
Ini tidak berfungsi. Jika saya input 1, maka Anda output Q, yang pada gilirannya menghasilkan Q. Qmemiliki panjang 1, tetapi kode Anda memiliki panjang 11.
NoOneIsHere
@NoOneIsHere 'yang outputnya memiliki n kali lebih banyak byte dari program yang di-output.' (bukan program yang diajukan)
michi7x7
1
@NoOneIsHere ini tidak: almnet.de/esolang/hq9plus.php (Spesifikasi bahasa hanya menyatakan "Mencetak seluruh teks dari file kode sumber")
michi7x7
1

Java 8, 175 174 byte

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

Contoh:

n=1output :

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

(panjang = 89) yang menghasilkan 89 angka nol :

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

n=10output :

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

(panjang = 90) yang menghasilkan 900 nol :

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

n=100output :

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

(panjang = 91) yang menghasilkan 9100 nol :

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Penjelasan:

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
sumber
0

RProgN 2 , 7 5 byte

«•.* 

Dengan ruang trailing

Dijelaskan

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

Cobalah online!

ATaco
sumber
0

CJam, 8 13 byte

q_,S\" 8+*S*"

Cobalah secara Online

Program yang dihasilkan menghasilkan spasi jadi agak sulit untuk mengatakannya.

geokavel
sumber
Saya pikir ini adalah satu-satunya jawaban yang menginterpretasikan bagian tentang menghasilkan program yang mengeluarkan teks dengan benar, tetapi rasionya mati jika inputnya lebih dari satu digit.
Dennis
Oh ya, ya. ,,
geokavel
0

Ly , 29 byte

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

Cobalah online! (tidak berfungsi saat ini karena bug pra-pemrosesan) Semua baik!

Lirik
sumber
0

Python → TECO, 20 byte

Jawabannya adalah dalam Python sementara kode yang dihasilkan adalah dalam TECO. Python adalah fungsi kembali VV12345\VVdiulang n kali. Lihat di sini untuk penjelasan tentang TECO.

'VV12345\VV'.__mul__
feersum
sumber
0

PHP, 47 +1 byte

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

mencetak satu garis bawah diikuti oleh spasi.
Jalankan sebagai pipa dengan -F; jalankan program yang dihasilkan dengan -fatau-F .

Ini akan gagal untuk input dengan lebih dari 64 digit,
yang jauh lebih tinggi daripadaPHP_INT_MAX (saat ini).

Namun, gagal untuk input yang lebih besar dari PHP_INT_MAX-18 ... apakah masih memenuhi syarat?

Titus
sumber
@HyperNeutrino: Ini akan gagal untuk input yang lebih besar dari PHP_INT_MAX-18. Apakah itu mendiskualifikasi?
Titus
Nah, saya akan mengatakan itu baik-baik saja :)
HyperNeutrino
0

PHP → Python 2, 40 + 1 byte

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

mencetak program Python yang mencetak berulang A. Jalankan sebagai pipa dengan -F.

Titus
sumber
0

Batch → Arang, 22 byte

Saya tidak yakin pengkodean mana yang harus saya gunakan, karena ini adalah byte. Berikut ini byte yang diartikan sebagai Windows-1252:

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

Bytes yang sama dengan PC-850:

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

Bytes yang sama di halaman kode Charcoal:

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

Program Arang yang dihasilkan adalah Plus(Length(Cast(n)), 9)byte panjang:

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
sumber
0

JavaScript (ES8), 43 41 39 byte

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

Menguji

Output dari fungsi yang dihasilkan adalah string spasi yang diganti dengan *s dalam Cuplikan ini.

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>

Shaggy
sumber
0

R , 46 byte

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

Cobalah online!

Fungsi anonim yang mengembalikan string

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

Yang mencetak a(yang adiikuti oleh spasi) 23 nkali. Saya membutuhkannya ''karena jika cattidak, tidak akan mencetak karakter spasi terakhir.

Giuseppe
sumber
0

C, 94 byte

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

ini akan menjadi 94 byte termasuk yang terakhir yang stadard C mengatakan itu harus ditulis. kembali sebagai karakter 'r' sebagai (panjang program) * (argumen program) jika argumen program tidak ada atau <<0 atau> 0xFFFFF tidak mencetak contoh apa pun

C:\>nameProg.exe 1
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
RosLuP
sumber
0

MATLAB (63 bytes)

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

Sebagai contoh:

>> a(5)

ans =

repmat('a',1,80)

dan:

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

ans =

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
PieCot
sumber