สร้างโปรแกรมที่พิมพ์ n คูณความยาว


16

รับจำนวนเต็มที่ไม่ใช่ค่าลบ nโซลูชันของคุณต้องแสดงผลโปรแกรมในภาษาที่คุณเลือกโดยที่เอาต์พุตมีnจำนวนไบต์เท่ากับโปรแกรมเอาท์พุท

กฎระเบียบ

  • คุณต้องระบุภาษาและการเข้ารหัสของโปรแกรมที่โซลูชันของคุณส่งออกและคุณไม่สามารถเลือกภาษาหรือการเข้ารหัสที่แตกต่างกันสำหรับอินพุตที่แตกต่างกันสำหรับโซลูชันของคุณ ภาษาของโปรแกรมเอาท์พุทของคุณอาจหรืออาจจะไม่เหมือนกันกับภาษาของโซลูชันของคุณ
  • การส่งของคุณต้องการจัดการจำนวนเต็มในช่วงภาษาของคุณเท่านั้น แต่โปรดอย่าใช้กฎนี้ในทางที่ผิด

นี่คือเพื่อการส่งที่สั้นที่สุดในหน่วยไบต์ชนะ

ตัวอย่าง

สมมติว่าnเป็นทางออกของฉัน 4. จากนั้นเอาท์พุทf_8โปรแกรมซึ่งใน (จินตนาการ) j3 1s+/2]!mzเอาท์พุทภาษาของฉัน เอาต์พุตโปรแกรมมีความยาว 3 และเอาต์พุตมีความยาว 3 * 4 = 12 ดังนั้นโซลูชันจึงถูกต้องสำหรับอินพุต 4

สมมติว่าnเป็น 1 และโปรแกรมของฉันส่งออกffffpfpffp(10 ไบต์) โปรแกรมffffpfpffpในภาษาที่ฉันเลือกจะต้องสร้างผลลัพธ์เป็น 10 * 1 = 10 ไบต์


ในขณะนี้สิ่งนี้ค่อนข้างไม่ระบุ คุณสามารถให้ตัวอย่างได้ไหม
DJMcMayhem

3
ฉันคิดว่าฉันรู้ว่าสิ่งที่เราควรจะทำ แต่ทุกครั้งที่ฉันอ่านสเป็คฉันก็มั่นใจน้อยลง เอาท์พุทข้อความที่มี n ครั้งเป็นจำนวนมากตามที่โปรแกรมเอาท์พุทดูเหมือนจะบอกเป็นนัยว่าเราต้องส่งออกข้อความและโปรแกรม ชุดอักขระและภาษาจะต้องสอดคล้องกับจำนวนเต็มทั้งหมด "ชุดอักขระ" ตัวใดที่อ้างถึงนี้
เดนนิส

ไม่เป็นไรที่จริงผมไม่เข้าใจผิดและเพื่อให้ได้ทั้งหมด แต่หนึ่งของคำตอบ
เดนนิส

1
@Dennis มันไม่ได้ช่วยให้ชื่อดูเหมือนจะขัดแย้งกับร่างกาย บางทีเอาท์พุทโปรแกรมที่ให้ความยาวของมันเป็นชื่อที่ดีกว่าถ้าฉันเข้าใจความท้าทายได้อย่างถูกต้อง (ฉันไม่แน่ใจว่าฉันทำ)
Sisyphus

1
เราสามารถใช้nเป็นสตริงได้หรือไม่?
Shaggy

คำตอบ:


7

JavaScript (ES6), 38 ไบต์

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

การสาธิต



3

brainfuck , 348 ไบต์

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

ลองออนไลน์! หรือดูเวอร์ชัน Ungolfed (เช่นสิ่งที่ฉันต้องทำงานด้วย)


คำปฏิเสธ

ฉันใช้เวลาทำสิ่งนี้มากกว่าที่ฉันคิดว่าเป็นไปได้อย่างมนุษย์ปุถุชน ฉันอยากจะขอบคุณแฟนสาวของฉันที่ให้ฉันช่วยเธอทำสิ่งนี้ เช่นเดียวกับผู้ช่วยให้รอดของฉันช่วยชีวิตของฉัน

มันทำงานได้ยังไง?

ไม่มีเงื่อนงำ

วิธีมันไม่ทำงาน?

เอาต์พุตทั้งหมดมีส่วนของรหัสต่อท้ายที่เหมือนกันทั้งหมด:

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

เราแบ่งมันเป็นสามส่วน a,b,c

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

อินพุตiถูกจับเข้าที่ด้านหน้าอย่างง่ายดาย:

iabc

(เช่นถ้าอินพุตเท่ากับ 10 i = '++++++++++')

The Duplicator - แยกอินพุตเป็นตัวเลขสองตัวที่เหมือนกันm, nเทียบเท่ากับอินพุต

The Adjuster - ปรับnเช่นนั้นเท่ากับความยาวของโปรแกรม

เครื่องพิมพ์ - พิมพ์m*nอักขระ ASCII


โปรดทราบว่าการป้อนข้อมูลในตัวอย่างที่เป็นnewlineซึ่งเป็นค่า ASCII 10 10จึงเข้าเป็น หากคุณต้องการทดสอบตัวเลขขนาดเล็กอื่น ๆ ให้แทนที่,ด้วยจำนวน+ที่คุณต้องการ



2

Haskell , 55 ไบต์

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

ลองออนไลน์! ตัวอย่างการใช้งาน: f 1ให้ผลตอบแทน 54 โปรแกรมต่อไปนี้:

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

ลองออนไลน์! ซึ่งสร้างเอาต์พุต 54 ไบต์ต่อไปนี้:

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

1

Python 3 -> HQ9 +, 11 ไบต์

'Q'.__mul__

มันจะต้องทำ

ลองออนไลน์!


ฉันจะทดสอบ HQ ได้ที่ไหน
ติตัส

1
ดีQเพียงแค่พิมพ์รหัสที่มาของตัวเอง คุณสามารถทดสอบที่นี่: hq9plus.alwaysdata.net นี่ไม่ควรจะเป็นรายการที่จริงจัง
michi7x7

มันใช้งานไม่ได้ ถ้าฉันป้อนข้อมูล1แล้วคุณเอาท์พุทซึ่งในการเปิดเอาท์พุทQ มีความยาวแต่รหัสของคุณมีความยาว QQ111
NoOneIsHere

@NoOneIsHere 'ซึ่งเอาต์พุตมี n ครั้งเป็นจำนวนมากเท่ากับโปรแกรมเอาต์พุต' (ไม่ใช่โปรแกรมที่ส่ง)
michi7x7

1
@NoOneIsHere นี่ไม่ได้: 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));}}

(length = 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));}}

(length = 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*"

ลองออนไลน์

โปรแกรมที่สร้างขึ้นส่งผลช่องว่างดังนั้นจึงเป็นเรื่องยากที่จะบอก


I think this is the only answer that interprets the part about outputting a program that outputs a text correctly, but the ratio is off if the input has more than one digit.
Dennis

Oh yeah, duh.,,
geokavel


0

Python → TECO, 20 bytes

The answer is in Python while the generated code is in TECO. The Python is a function returning VV12345\VV repeated n times. See here for an explanation of the TECO.

'VV12345\VV'.__mul__

0

PHP, 47+1 bytes

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

prints one underscore followed by spaces.
Run as pipe with -F; run outputted program with -f or -F.

This would fail for input with more than 64 digits,
which is far higher than PHP_INT_MAX (at this time).

However, it fails for input larger than PHP_INT_MAX-18 ... does it still qualify?


@HyperNeutrino: This will fail for input larger than PHP_INT_MAX-18. Does that disqualify?
Titus

Nah, I'll say that's fine :)
HyperNeutrino


0

Batch → Charcoal, 22 bytes

I'm not sure which encoding I should be using, since these are bytes. Here are the bytes interpreted as Windows-1252:

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

The same bytes as PC-850:

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

The same bytes in Charcoal's code page:

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

The resulting Charcoal program is Plus(Length(Cast(n)), 9) bytes long:

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 bytes

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

Test it

The output of the generated function is a string of spaces which are replaced with *s in this Snippet.

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 bytes

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

Try it online!

Anonymous function that returns the string

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

Which prints a (that's a followed by a space) 23 times n times. I needed the '' because otherwise cat wouldn't print the last space character.


0

C, 94 bytes

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

this would be 94 bytes include the last \n that stadard C says it should be written. return as 'r' characters as the (lenght of the program) * (argument of the program) if the program argument not exist or it is <=0 or it is >0xFFFFF print nothing example

C:\>nameProg.exe 1
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

0

MATLAB (63 bytes)

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

For example:

>> a(5)

ans =

repmat('a',1,80)

and:

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

ans =

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.