Tạo các chương trình in gấp n lần chiều dài của chúng


16

Với một số nguyên không âm n, giải pháp của bạn phải xuất ra một chương trình bằng ngôn ngữ bạn đã chọn có đầu ra có nsố byte nhiều hơn chương trình xuất ra.

Quy tắc

  • Bạn phải chỉ định ngôn ngữ và mã hóa của các chương trình mà giải pháp của bạn đưa ra và bạn không được chọn các ngôn ngữ hoặc mã hóa khác nhau cho các đầu vào khác nhau cho giải pháp của mình. Ngôn ngữ của chương trình đầu ra của bạn có thể hoặc không giống với ngôn ngữ của giải pháp của bạn.
  • Việc gửi của bạn chỉ cần xử lý số nguyên trong phạm vi ngôn ngữ của bạn, nhưng vui lòng không lạm dụng quy tắc này.

Đây là vì vậy bài nộp ngắn nhất tính bằng byte sẽ thắng.

Thí dụ

Giả sử nlà 4. Giải pháp của tôi sau đó xuất ra f_8, một chương trình, trong đầu ra ngôn ngữ (tưởng tượng) của tôi j3 1s+/2]!mz. Đầu ra chương trình có độ dài 3 và đầu ra của nó có độ dài 3 * 4 = 12, vì vậy giải pháp là chính xác cho đầu vào 4.

Giả sử thay vào đó nlà 1 và chương trình của tôi xuất ra ffffpfpffp(10 byte). Chương trình ffffpfpffptrong ngôn ngữ tôi chọn sẽ phải tạo ra đầu ra 10 * 1 = 10 byte.


Tại thời điểm này, điều này là chưa được xác định rõ. Bạn có thể cung cấp một số ví dụ?
DJMcMayhem

3
Tôi nghĩ rằng tôi biết những gì chúng ta phải làm, nhưng mỗi khi tôi đọc thông số kỹ thuật, tôi trở nên ít chắc chắn hơn. xuất ra một số văn bản có số byte gấp n lần chương trình xuất ra dường như ngụ ý rằng chúng ta phải xuất văn bản và chương trình. Bộ ký tự và ngôn ngữ phải nhất quán cho tất cả các số nguyên. "Bộ ký tự" này được đề cập đến?
Dennis

Nevermind, tôi thực sự đã hiểu lầm, và tất cả chỉ là một trong những câu trả lời.
Dennis

1
@Dennis Không có ích gì khi tiêu đề dường như mâu thuẫn với cơ thể. Có lẽ Xuất ra một chương trình có độ dài gấp n lần chiều dài của nó sẽ là một tiêu đề tốt hơn, nếu tôi hiểu đúng thách thức (tôi không chắc là mình làm thế)
Sisyphus

1
Chúng ta có thể lấy nnhư một chuỗi?
Xù xì

Câu trả lời:


7

JavaScript (ES6), 38 byte

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

Bản giới thiệu



3

Brainfuck , 348 byte

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

Hãy thử trực tuyến! Hoặc xem phiên bản Ungolfed (tức là những gì tôi phải làm việc với)


Khước từ

Tôi đã dành nhiều thời gian hơn để làm điều này hơn tôi nghĩ là có thể. Tôi muốn cảm ơn bạn gái của tôi vì đã cho phép tôi bỏ rơi cô ấy để làm việc này; cũng như vị cứu tinh của tôi .

Làm thế nào nó thậm chí hoạt động?

Không có manh mối.

Làm thế nào nó hoạt động?

Tất cả các kết quả đầu ra đều có một đoạn mã giống nhau:

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

Hãy chia nó thành ba phần được gọi là a,b,c

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

Đầu vào ichỉ đơn giản là được xử lý ở phía trước trong unary:

iabc

(ví dụ: nếu đầu vào là 10, thì i = '++++++++++')

Bộ sao chép - Chia đầu vào thành hai số giống nhau m, n, tương đương với đầu vào

Bộ điều chỉnh - Điều chỉnh nsao cho bằng với độ dài của chương trình

Máy in - In các m*nký tự ASCII


Lưu ý rằng đầu vào trong ví dụ là a newline, với giá trị ASCII là 10, do đó, đầu vào là 10. Nếu bạn muốn kiểm tra các số nhỏ khác, hãy thay thế ,bằng số +mà bạn mong muốn.




1

Python 3 -> HQ9 +, 11 byte

'Q'.__mul__

Nó phải được thực hiện

Hãy thử trực tuyến!


Tôi có thể kiểm tra HQ ở đâu?
Tít

1
Vâng, Qchỉ cần in mã nguồn của riêng mình. Bạn có thể kiểm tra điều đó tại đây: hq9plus.alwaysdata.net . Đây không bao giờ được coi là một mục nghiêm trọng
michi7x7

Điều này không hoạt động. Nếu tôi nhập 1, thì bạn xuất ra Q, lần lượt xuất ra Q. Qcó độ dài 1, nhưng mã của bạn có độ dài 11.
NoOneIsHãy

@NoOneIsHere 'có đầu ra có số lượng byte gấp n lần chương trình được xuất ra.' (không phải chương trình đã gửi)
michi7x7

1
@NoOneIsĐây không phải là: almnet.de/esolang/hq9plus.php (Đặc tả ngôn ngữ chỉ ghi "In toàn bộ văn bản của tệp mã nguồn")
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]);}}

Ví dụ:

n=1đầu ra :

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

(length = 89) tạo ra 89 số không :

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

n=10đầu ra :

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

(length = 90) tạo ra 900 số không :

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

n=100đầu ra :

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

(length = 91) tạo ra 9100 số không :

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Giải trình:

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 byte

«•.* 

Với một không gian kéo

Giải thích

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

Hãy thử trực tuyến!


0

CJam, 8 13 byte

q_,S\" 8+*S*"

Dùng thử trực tuyến

Chương trình được tạo ra không gian rất khó để nói.


Tôi nghĩ rằng đây là câu trả lời duy nhất diễn giải phần về việc xuất ra một chương trình xuất văn bản chính xác, nhưng tỷ lệ bị tắt nếu đầu vào có nhiều hơn một chữ số.
Dennis

Ồ vâng, duh. ,,
geokavel


0

Python → TECO, 20 byte

Câu trả lời là bằng Python trong khi mã được tạo là trong TECO. Python là một hàm trả về VV12345\VVlặp lại n lần. Xem ở đây để giải thích về TECO.

'VV12345\VV'.__mul__

0

PHP, 47 + 1 byte

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

in một dấu gạch dưới theo sau là khoảng trắng.
Chạy như đường ống với -F; chạy chương trình đầu ra với -fhoặc -F.

Điều này sẽ thất bại cho đầu vào có hơn 64 chữ số,
cao hơn nhiều so vớiPHP_INT_MAX (tại thời điểm này).

Tuy nhiên, nó không thành công cho đầu vào lớn hơn PHP_INT_MAX-18 ... nó vẫn đủ điều kiện?


@HyperNeutrino: Điều này sẽ thất bại cho đầu vào lớn hơn PHP_INT_MAX-18. Điều đó có đủ tiêu chuẩn?
Tít

Không, tôi sẽ nói là ổn thôi :)
HyperNeutrino

0

PHP → Python 2, 40 + 1 byte

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

in một chương trình Python in lặp đi lặp lại As. Chạy như ống với -F.


0

Mẻ → Than, 22 byte

Tôi không chắc chắn nên sử dụng mã hóa nào, vì đây là các byte. Dưới đây là các byte được hiểu là Windows-1252:

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

Các byte giống như PC-850:

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

Các byte tương tự trong trang mã của Char than:

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

Chương trình Char than kết quả là Plus(Length(Cast(n)), 9)byte dài:

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 byte

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

Kiểm tra nó

Đầu ra của hàm được tạo là một chuỗi các khoảng trắng được thay thế bằng *s trong Đoạn trích này.

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 byte

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

Hãy thử trực tuyến!

Hàm ẩn danh trả về chuỗi

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

Mà in a( atheo sau là một khoảng trắng) 23 nlần. Tôi cần ''bởi vì nếu không catsẽ không in ký tự không gian cuối cùng.


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

đây sẽ là 94 byte bao gồm \ n cuối cùng mà stadard C nói rằng nó nên được viết. trả về dưới dạng các ký tự 'r' dưới dạng (chiều dài của chương trình) * (đối số của chương trình) nếu đối số chương trình không tồn tại hoặc đó là <= 0 hoặc là> 0xFFFFF không in ví dụ

C:\>nameProg.exe 1
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

0

MATLAB (63 byte)

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

Ví dụ:

>> a(5)

ans =

repmat('a',1,80)

và:

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

ans =

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.