Viết các dòng trong trại giam


63

Giới thiệu

Những kẻ xấu - bạn bị giam giữ. Giáo viên tiếng Anh của bạn không hiểu trang web này và muốn bạn "ngừng làm toán trên dohickey kỹ thuật số của bạn, đây là lớp học tiếng Anh!"

Cô ấy đã kết án bạn viết câu nói yêu thích của cô ấy lên bảng đen 25 lần, sẽ cho tổng cộng 100 dòng trên bảng đen.

The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.

May mắn cho bạn, bạn là một độc giả cuồng nhiệt (không đề cập đến một chuyên gia chơi gôn mã)! Bạn đã đọc về một mẹo có thể giúp bạn dễ dàng.

con cáo

(Foxtrot của Bill Amend)

Thật không may cho Jason, nó đã không thành công. Nhưng bạn có một ý tưởng tốt hơn! Vì giáo viên tiếng Anh của bạn nghĩ rằng bạn đang làm toán, nếu bạn bỏ tất cả các số ra khỏi chương trình thì nó có thể hoạt động! Bạn cũng muốn giữ chương trình của mình càng ngắn càng tốt vì bạn là một sinh viên lười biếng và không muốn viết nhiều lên bảng.

Viết chương trình tuân thủ các quy tắc sau:

  • Chương trình của bạn phải in 4 dòng trên 25 lần. Các dòng phải được xuất ra theo thứ tự đó, lặp lại. Tổng cộng chính xác 100 dòng đầu ra (một dòng mới ở cuối hoặc một dòng mới hàng đầu ở đầu là được).
  • Bạn không thể sử dụng các ký tự 0123456789. Giáo viên của bạn bị nhầm lẫn bởi toán học và sẽ gọi bạn ra ngoài!
  • Bạn có thể sử dụng bất kỳ nhập khẩu và thư viện bên ngoài mà không tính nhập khẩu. Giáo viên tiếng Anh của bạn không biết về lập trình. Jason có thể đã cứu rất nhiều công việc bằng cách không viết #include <stdio.h>và bạn không muốn mắc lỗi tương tự!
  • Điểm chương trình của bạn bằng cách byteđếm. Điểm số thấp nhất chiến thắng!

2
Nếu văn bản đã đọc "1900s", việc viết đầu ra sẽ khó khăn hơn một chút.
Ingo Bürk

30
đến comix: anh ấy không in \ n's và vòng lặp từ 1 khá khó xử (như chống lại bản chất C) ...
VX

11
@VX Bill Amend là một Pascal lâu đời và bất cứ khi nào anh ta viết C trở nên khá rõ ràng.
lông mịn

5
Điều này nghe rất giống một trong những giáo viên tiếng Anh cũ của tôi.
Kaz Wolfe

2
Banning + sẽ có ý nghĩa ở đây, nhưng có lẽ điều đó đã quá khó khăn.
Pharap

Câu trả lời:


9

CJam, 109 107 106 104 103 byte

0000000: 22 0c 20 4f 18 41 e4 d8 a5 f3 95 cf 5e 2b cb 1c  ". O.A......^+..
0000010: 44 64 2f bf 28 23 e2 47 4e 4e 77 73 fc 43 09 a2  Dd/.(#.GNNws.C..
0000020: 09 0b fb 18 29 e8 e8 49 5d fc 00 da b8 70 b6 3e  ....)..I]....p.>
0000030: 0c 24 d7 5a 5b 28 1c 45 2e 90 63 86 04 5c 3e 95  .$.Z[(.E..c..\>.
0000040: 4b ae 66 22 48 48 2a 62 46 47 2b 62 22 54 0a 20  K.f"HH*bFG+b"T. 
0000050: 2d 2e 22 27 7b 2c 57 25 7c 66 3d 7b 28 2f 29 2a  -."'{,W%|f={(/)*
0000060: 7d 5a 2a 43 44 2b 2a                             }Z*CD+*

Trên đây là một bãi chứa xxd đảo ngược.

Kiểm tra

Bạn có thể tạo và thực thi mã trên bằng cách chạy mã này trong trình thông dịch trực tuyến :

"bxyyeighxrum.yninexfun.ytwo-thousands abto run
a civilized classroom.y
The xteen-hundreds webfor bre a time ""T
 -."'{,W%|f#31bHH*b:c`'\2*/'\*"HH*bFG+b""T
 -."`"'{,W%|f={(/)*}Z*CD+*"]:+~

Để xem mã được tạo (không thực thi mã), hãy xóa mã cuối cùng ~.

Để đếm số byte (một ký tự là một byte trong ISO-8859-1), thay thế cuối cùng ~bằng a ,.

Phiên bản có thể in (122 byte)

"bxyyeighxrum.yninexfun.ytwo-thousands abto run
a civilized classroom.y
The xteen-hundreds webfor bre a time "{(/)*}Z*CD+*

Sau khi đẩy chuỗi (S), sau đây được thực thi:

{    }Z*        " Repeat 3 times:     ";
 (              "     Q := S.shift()  ";
  /             "     T := S.split(Q) ";
   )            "     R := T.pop()    ";
    *           "     S := T.join(R)  ";
        CD+*    " S *= 12 + 13        ";

Chơi golf Moar

Sau khi đẩy chuỗi không thể in (U), sau đây được thực thi:

HH*b                        " U := U.base(17 * 17) ";
    FG+b                    " U := U.base(15 + 16) ";
        "T\n -."            " P := 'T\n -.'        ";
                '{,W%|      " P |= 'zyx...\0'      ";
                      f=    " U[i] -> P[U[i]]      ";

Điều này đẩy chuỗi của phiên bản có thể in. Phần còn lại của mã hoạt động như trước.


Sử dụng mã này, tôi nhận được này mã được tạo mà là 144 byte. Tôi có làm điều gì sai ?
Trình tối ưu hóa

Mã hóa UTF-8 sẽ dẫn đến số byte cao hơn, vâng. Với ISO-8859-1, số byte là 109. Bạn có thể thay thế ~bằng ,để xác minh.
Dennis

2
Tôi đã nhận được kết quả tối ưu hóa chính xác, nhưng thêm ]:+~nó làm cho nó hoạt động. Tại sao bạn không thêm mã đó vào mã của mình?
Sáng

1
@ user23013: Trình thông dịch Java tôn trọng $ LANG cho I / O. Trong nội bộ, CJam chỉ có ký tự 16 bit.
Dennis

3
Bạn thực sự không phải unicode-ize giải pháp của bạn vì không tự nén nó chỉ là 124 byte, đánh bại tất cả những người khác.
Trình tối ưu hóa

77

JavaScript (ES6) 164

B='teen-hundreds were a time',alert(B.replace(/./g,
"The eigh"+B+" for rum.\nThe nine"+B+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n"))

Kiểm tra trong bảng điều khiển FireFox / FireBug.


19
Đây là thiên tài!
Trình tối ưu hóa

1
Yup, thay thế mỗi ký tự bằng chuỗi lớn hơn. Tạo 25 bản sao của chuỗi lớn hơn.
Tối ưu hóa

1
@Optimizer Đó thiên tài :)
FryAmTheEggman

3
@Malvolio Trong thực tế, phần lặp lại là 30 ký tự. Và tôi có thể hiển thị một chuỗi lớn các nỗ lực, thêm và cắt các từ và thay thế trước khi tìm giải pháp đơn giản này.
edc65

1
@IsmaelMiguel Tôi nghĩ bạn có nghĩa là bất kỳ trình duyệt ES6 nào. Vấn đề: tại thời điểm thử thách này được đăng, chuỗi mẫu không được triển khai trong bất kỳ trình duyệt nào: Firefox là phiên bản đầu tiên - ngày 34, ngày đầu tiên 2014 - sau đó là Chrome, tháng 3 năm 2015. Nhưng ngay cả khi không có chuỗi mẫu, bạn vẫn sẽ là 153, tốt hơn tôi . Bạn nên đăng nó như một câu trả lời.
edc65

34

Con trăn: 188 173 160 153

a="teen-hundreds were a time"
print"The eigh%s for rum.\nThe nine%s for fun.\nThe two-thousands are a time to run\na civilized classroom.\n"%(a,a)*len(a)

Tôi không trăn nhiều, nhưng điều này có vẻ khá ngắn đối với tôi.

Chỉnh sửa: Vì vậy, tôi đã sai, nó không ngắn chút nào! Cảm ơn sự giúp đỡ trong các ý kiến: D


1
Bạn có thể mất dòng mới và thụt vào vòng lặp for để lưu một vài byte.
Holloway

1
@Geobits, tôi thực hiện điều đó 157
Holloway

1
@Geobits bạn đang chạy trên máy windows? Các mã hóa dòng trong các cửa sổ thường xuyên \ r \ n thay vì chỉ \ n. Đó có thể là lý do tại sao nó hiển thị 157 byte cho chúng tôi, nhưng 160 cho bạn.
Rob Watts

2
Đây chỉ là 160 . Bạn có lẽ bỏ qua ba \trong \ndo thoát ...
Tối ưu hóa

1
Bạn có thể di chuyển giá trị bvào print: %có độ ưu tiên cao hơn *.
FryAmTheEggman

29

CJam, 151 140 135 132 130 128 byte (Có thể tweet)

"TeighYrum.TnineYfun.Ttwo-thousands are a time to run
a civilized classroom.""YT"["teen-hundreds were a time for ""
The "]erAF+*

Hãy thử nó ở đây

Tôi có thể rút ngắn xuống 110 byte bằng cách chuyển đổi nó thành unicode, nhưng vì nó không đánh bại giải pháp unicode khác, tôi không muốn đặt nó :)


23
Này, cái :Dbiểu tượng cảm xúc đó đang làm gì vậy?! Bạn đang nhắn tin cho bạn bè trong thời gian bị giam giữ? Đến văn phòng hiệu trưởng!
Doorknob

2
@Doorknob: D: P
Trình tối ưu hóa

Có lẽ bạn có thể tạo Tbí danh .\nThe , sau đó xóa dòng bổ sung mà dòng này tạo ra từ đầu chuỗi đầu ra (cjam-fu của tôi không đủ tốt để tìm hiểu xem bạn có thể dễ dàng làm điều đó không)

@professorfish cuối cùng tiêu thụ nhiều byte hơn mức tiết kiệm. mẹeff.in / từ *% 28Y% 2F% 28% 40 \
Trình tối ưu hóa

Nitpicking: Sử dụng 128 byte trên của trang mã tương thích ASCII không liên quan gì đến Unicode.
Dennis

23

PHP, 0 byte



Bạn có thể sử dụng bất kỳ nhập khẩu và thư viện bên ngoài mà không tính nhập khẩu.

Để chạy mã này, bạn phải nhập một thư viện có tên data://text/plain,<?php...classroom.\n";này:

<?php require_once 'data://text/plain,<?php
  for($i=ord("z");$i>ord("a");$i--)
    echo "The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
";'; ?>

Và bạn phải đã allow_url_includekích hoạt trong của bạn php.ini.

Không có thêm số hoặc phần mở rộng, nhờ Dennis.


9
Bản năng đầu tiên của tôi là hét lên một cái gì đó về sơ hở, nhưng vì câu trả lời này thực sự khép kín, tôi nghĩ rằng đây là một cách thông minh để sử dụng PHP để khai thác lỗ hổng đã được tạo ra một cách có chủ ý cho các câu trả lời của Python. Vì bạn đã gian lận, bạn chỉ có thể sử dụng require_once "data://text/plain,The eighteen-hundreds...";, không yêu cầu sh , không sử dụng số và vẫn là 0 byte.
Dennis

10
Tôi sẽ ủng hộ điều này cho sự sáng tạo nhưng tôi sẽ không chấp nhận điều này.
hmatt1

14

Hồng ngọc 185 180 176 byte

EDIT: Nội suy chuỗi, cảm ơn @britishtea

Đây là môn đánh gôn đầu tiên của tôi và tôi không phải là một Rubist (nhưng tôi chắc chắn yêu thích Ruby). Dù sao, đây là nó (rút ngắn, đề nghị của Doorknob).

t=' were a time for '
s="The eighteen-hundreds#{t}rum.
The nineteen-hundreds#{t}fun.
The two-thousands are a time to run
a civilized classroom."
s.split.size.next.times{puts s}

1
Bạn có thể đánh gôn này xuống hơn nữa bằng cách thay thế một số từ / nhóm từ lặp lại bằng phép nội suy Chuỗi.
Anh

3
+1 để nhận thấy có (gần như) 25 từ trong chuỗi
Chấn thương kỹ thuật số

2
s.split.size.nextlưu 5 ký tự (bạn không cần chỉ định khoảng trắng để phân chia).
Doorknob

Tôi không biết Ruby, nhưng sẽ (s.split.size+1).timesngắn hơn 1 byte?
xem

1
@Sieg không được phép sử dụng số!
rjdown

13

Java 249 231 230 222

Câu trả lời đầu tiên của tôi! Tại sao không bắt đầu sử dụng ngôn ngữ tôi biết rất rõ.

class c{public static void main(String[]g){for(int a='!';a++<':';out.println("The eighxrum.\nThe ninexfun.\nThe two-thousands are a time to run\na civilized classroom.".replaceAll("x","teen-hundreds were a time for ")));}}

Ung dung

import static java.lang.System.*;
class c
{
    public static void main(String[]g)
    {
        for(int a='!';a++<':';out.println("The eighxrum.\nThe ninexfun.\nThe two-thousands are a time to run\na civilized classroom.".replaceAll("x","teen-hundreds were a time for ")));
    }
}

9
Chào mừng bạn Bạn có thể thoát khỏi publiclớp học của mình và rút ngắn argsthành một ký tự. Bạn cũng có thể làm a++<':'thay vì tăng nó một cách riêng biệt. Vì OP không tính nhập khẩu, bạn có thể tiết kiệm thêm một chút với import static java.lang.System.*;, sau đó bạn không cần phải viết System.sau (khi tính). Làm điều đó tôi đã giảm xuống còn khoảng 230. Bạn có thể muốn xem trang thủ thuật Java nếu bạn chưa có.
Geobits

@Optimizer Cảm ơn! Tôi chỉ không thấy cuộc đình công ở trên.
Sáng


@Geobits Cảm ơn bạn! Rõ ràng, bạn cũng có thể dán mã ngay vào chính vòng lặp. Không thêm hoặc loại bỏ bất cứ điều gì, nhưng tôi nghĩ rằng nó trông giống như chơi gôn hơn.
Sáng

4
Lạm dụng vòng lặp là khá phổ biến. Nếu bạn có nhiều câu lệnh trong cơ thể, bạn có thể đặt một câu ở bên ngoài và phần còn lại bên trong để lưu một ký tự (vì dù sao bạn cũng cần một dấu chấm phẩy bên ngoài). Rất nhiều sân golf cuối cùng là một vòng lặp lớn. Ngoài ra, "trông có vẻ hơn" là lý do hoàn toàn hợp lệ để làm bất cứ điều gì ngay cả khi nó không tiết kiệm: P
Geobits

11

C 171

a='a';b="teen-hundreds were a time for ";main(){for(;a++<'z';)printf("The eigh%srum.\nThe nine%sfun.\nThe two-thousands are a time to run\na civilized classroom.\n",b,b);}

Lúc đầu, tôi đã thử phiên bản đơn giản (189 byte), tốt hơn so với giải pháp C khác ...

main(a){for(a='a';a<'z';++a)printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}

mà sau này tôi đã tối ưu hóa một chút ...


1
Huh, đó là tiện lợi. Tôi đã không nhận ra các biến tĩnh với chuỗi ký tự được gán cho chúng hoàn toàn có kiểu char *.
FireFly

@FireFly GCC biên dịch tốt trên acó lẽ vì nó mặc định int, có thể chấp nhận một chargiá trị. Nó không giống như btrừ khi tôi gọi nó là char[]mặc dù. VX, bạn đang sử dụng trình biên dịch nào?
Cấp sông St

bintquá nhưng nó giữ con trỏ đến chuỗi ký tự. Nó hoàn toàn ổn trong GCC (Tôi có trên máy 4.8.2).
VX

1
for(a='a';++a<'z';)
xem

9

JavaScript, ES6, 174 172 154 byte

Sử dụng replacethủ thuật của @ edc65 . Cảm ơn!

alert((d="teen-hundreds were a time").replace(/./g,`The eigh${d} for rum.
The nine${d} for fun.
two-thousands are a time to run
a civilized classroom.
`))

Chỉ hoạt động trong Firefox mới nhất (34 trở lên) do sử dụng chuỗi mẫu.


@Nijikokun Bạn biết rằng sẽ gây ra 30 lần lặp lại thay vì 25, phải không?
Trình tối ưu hóa

Tôi đoán rằng ff 34 là bản beta hoặc một cái gì đó kể từ khi tôi mới nhất (vừa được kiểm tra) và nó là 33 và nó không hoạt động ở đó
Sammaye

8

BrainFuck ( 1.597 ký tự )

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

Điều này vẫn có thể được chơi golf hơn nữa, nếu bất cứ ai quan tâm.

Bạn có thể kiểm tra điều này và xác nhận rằng nó cung cấp đầu ra chính xác trong khi đáp ứng tất cả các quy tắc.


5
Đây là gì? Tôi đã nói với bạn để viết câu, không phải ngẫu nhiên nguệch ngoạc! Thậm chí không có bất kỳ từ nào ở đây!
Đạp xe

5
Ummm .. Tôi nghĩ mục tiêu là sử dụng ít nhân vật nhất . Bạn chắc chắn đã giành được "mục tiêu chống lại" :-)
Carl Witthoft

7

Perl - 145

Tôi rất vui khi thấy rất nhiều câu trả lời! Đây là một giải pháp Perl.

$s="teen-hundreds were a time for";print"The eigh$s rum.
The nine$s fun.
The two-thousands are a time to run
a civilized classroom.
"for b..z

7

Vì cô ấy ghét toán học rất nhiều, tại sao không phải là Mathematica (177)

   a = "teen-hundreds were a time for "; Do["The eigh" <> a <> "rum.
   The nine" <> a <> "fun.
   The two-thousands are a time to run a civilized classroom." // Print, {StringLength@a}]

6

Javascript ES6, 198 193 byte

m=Math;alert("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n".repeat(~~(m.exp(m.PI)+m.E)))

Giáo viên của bạn không muốn bất kỳ số nào, nhưng vì họ là một giáo viên tiếng Anh, họ không biết Math.floor(Math.exp(Math.PI)+Math.E)nghĩa là gì .

Dễ đọc hơn:

alert("The eighteen-hundreds were a time for rum.\n\
 The nineteen-hundreds were a time for fun.\n\
 The two-thousands are a time to run\na civilized\n classroom.".repeat(Math.floor(Math.exp(Math.PI)+Math.E)))

Phải được chạy trong firefox mới nhất


1
Thiếu một dòng mới ở cuối, vì vậy các hàng đầu tiên và cuối cùng được nối thêm 75 hàng
edc65

Tôi sẽ trao giải +1 cho việc bẻ cong các quy tắc với tham chiếu e ^ pi của XKCD, nhưng với + e trái ngược với -pi ... Bravo!
WallyWest

-4 byte:with(Math)alert("long string here".repeat(exp(PI)+E|[]))
nderscore

Ôi, quên đi môn Toán:(q='aaaaa'.length)*q
edc65

Quên về bình luận @ edc65 quá! Sử dụng cái này : "\x18".charCodeAt()! (mã hóa mũi tên lên và bạn sẽ tiết kiệm được một tấn!)
Ismael Miguel

6

Javascript - 178 byte byte

Môn đánh gôn đầu tiên của tôi, tôi nghĩ rằng tôi sẽ cho nó một cú đánh với những người điều khiển vặn vẹo một chút, không thành công như mong đợi, nhưng ồ!

c="teen-hundreds were a time for "
b=!!c
alert(Array((b+b+b<<b+b)+b<<b).join("The eigh"+c+"rum.\nThe nine"+c+"fun.\nThe two-thousands are a time to run\na civilized classroom.\n"))

Vì tôi đã bị giam giữ và rõ ràng là có vấn đề với chính tôi ... Javascript - 71 Byte

Điều này có thể sẽ khiến tôi gặp rắc rối sâu sắc hơn, nhưng, nếu tôi đã bị giam giữ, VÀ tôi đang lên kế hoạch lừa dối việc giam giữ của mình, rõ ràng tôi thiếu phán đoán tốt về cách tôi nên cư xử trong lớp. Có lẽ nếu tôi có thể kéo một người trên giáo viên của mình, tôi có thể kéo một người trên tất cả những người chơi golf khác ngoài đó.

b=+true;alert( Array((b+b+b<<b+b)+b<<b).join($('code')[+!b].innerHTML))

Nhanh chóng! Người dùng Chrome / IE 11 / Fireorms, mở bảng điều khiển NGAY BÂY GIỜ và dùng thử.

(Xin đừng làm tổn thương tôi quá nhiều, tôi nghĩ điều đó thật buồn cười)


1
72 là niềm vui. 176 sai nhiều lần: Mảng (25) .join () đưa ra 24 lần lặp lại và một dòng mới ở câu cuối bị thiếu. Tất cả trong tất cả 24 * 3 = 72 hàng thay vì 100 (cậu bé lười biếng!)
edc65

Tháng Tám, ok cố định. Bây giờ 178 và 71.
Sidney

1
Bạn có thể lưu 2 byte thêm t và khoảng trắng ở "een-trăm ... cho".
Sáng

Mã thứ hai đang làm gì?
cần

1
@justhalf, Nó sử dụng JQuery, một thư viện JavaScript phổ biến mà dường như mạng SO sử dụng. $ Thực sự là một hàm mà trong số nhiều thứ khác, mất rất nhiều công việc trong việc lựa chọn phần tử DOM. Bằng cách sử dụng $ ('<selector>'), trong trường hợp này là tất cả các phần tử có thẻ 'code', tôi nhận được một đối tượng chứa tất cả các phần tử. Bằng cách sử dụng [+! B] Tôi nhận được giá trị nguyên là false, vì vậy tôi chọn chỉ số 0, đây là khối mã đầu tiên của OP, thực tế là câu nói ưa thích của giáo viên.
Sidney

5

C # - 229 216 byte

usingFTW miễn phí !

using c=System.Console;
class S{static void Main(){var a="teen-hundreds were a time";for(int b=a.Length,i=b-b;i++<b;)c.Write("The eigh"+a+" for rum.\nThe nine"+a+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}}

Thay thế, cùng một số byte ( usingmặc dù lạm dụng nhiều hơn )

using i=System.Int32;
using c=System.Console;
class S{static void Main(){var a="teen-hundreds were a time";for(int b=new i();b++<a.Length;)c.Write("The eigh"+a+" for rum.\nThe nine"+a+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}}

4
~ ~ (╯ ° □ °) ╯︵ ┻
William

Bạn có thể thêm "cho" vàoa
FryAmTheEggman

@FryAmTheEggman chuỗi dài 25 ký tự, anh ta đang sử dụng nó để lấy số 25 một cách riêng biệt. Tuy nhiên, anh ta có thể hoán đổi phương thức này chỉ bằng cách trừ đi các ký tự với nhau ( ':'-'!'== 25), ngắn hơn a.Lengthvà sẽ cho phép đưa vào như bạn đề xuất. (Thay vào đó, hãy làm như những câu trả lời khác dường như, và chỉ lặp lại giữa !:, thật buồn cười khi tất cả chúng ta đã chọn cùng một ký tự)
VisualMelon

@VisualMelon Rất tiếc, bạn hoàn toàn đúng.
FryAmTheEggman

1
Tôi nghĩ rằng tôi có thể kể từ khi sử dụng thậm chí không được tính, OP đã làm rõ điều này?
William Barbosa

5

Befunge-93, 268 260 256 (kích thước lưới: 72x6 = 432)

#v"K">:!#@_v>$"enin">,,,,::-" rof emit a erew sderdnuh neet">:#,_$::!!-#
, ,,,"The "<|\!\%-"\^"::%-" #":-!!:
   -"#-"-::$_ "hgie"^v1"two-thousands are a time to run"
$_$  "nuf"v"rum"
v1-"##",,,<      >:#,_"moorssalc dezilivic a"1
_# < ^,,\-"AK."$_,#!:

Đây là lần đầu tiên tôi chơi golf, vì vậy tôi nghĩ rằng tôi đã thử một ngôn ngữ chưa được thực hiện cho vấn đề này, vì tôi sẽ không thêm bất cứ điều gì khác. Vì nó tương thích Befunge-93 (nằm trong lưới 80x25 và chỉ sử dụng các hướng dẫn Befunge-93), nên nó cũng hoạt động trong Befunge-98. Chỉ trong trường hợp, tôi cũng tránh việc con trỏ vượt qua bất kỳ ký tự không hướng dẫn nào ngoài không gian. Tôi không thể nhớ liệu đặc tả có thực sự xác định các ký tự đó là không có hay không và tôi sẽ không có quỷ mũi trong mã MY.

Bạn thực sự không thể mã Befunge. Điều quan trọng cần lưu ý ở đây là Befunge đẩy các ký tự vào ngăn xếp làm giá trị ASCII của chúng, làm cho việc tham chiếu các số mà không cần nói đến chúng theo nghĩa đen. Ở "K"phía trên bên trái là 75, đề cập đến số lần lặp lại số lần của các mệnh đề "the" trên mỗi lần lặp lại; Tôi sử dụng mô-đun và một số kỹ xảo khác trên (bản sao) số này để xác định đường dẫn nào cần thực hiện in trên mỗi lần di chuyển. ::-là một thành ngữ tốt đẹp cho số không, hữu ích cho các chuỗi kết thúc bằng không; Tôi sử dụng nó hai lần ở đây.

Thỉnh thoảng, con trỏ cần đi qua một nơi mà tôi đang xác định một chuỗi, do đó các lựa chọn cụ thể của các ký tự được sử dụng để có được một số số nhất định tại một số điểm.

Điều thú vị về rất nhiều trình thông dịch Befunge là bạn có thể xem con trỏ phi tiêu xung quanh lưới, cũng như xem giá trị nào trong ngăn xếp. Bằng cách đó bạn có thể bước qua và xem chương trình hoạt động như thế nào, ít nhiều! Tôi khuyên bạn nên sử dụng http://befungius.aurlien.net/ nếu bạn không có trình thông dịch Befunge ưa thích của riêng bạn.

Điều này có lẽ có thể được giảm xuống một chút (hoặc rất nhiều) hơn. Xin vui lòng cho tôi thông tin phản hồi! Nếu tôi cần cung cấp một lời giải thích tốt hơn, ai đó cho tôi biết; Tôi mới biết điều này.

Chỉnh sửa - loại bỏ một vài byte bằng cách loại bỏ chuyển hướng không cần thiết đến hàng cuối cùng khi chương trình kết thúc (chỉ cần đặt @nơi ^sử dụng).

Một chỉnh sửa khác - đã loại bỏ thêm một số byte ở nhiều nơi khác nhau, chủ yếu là với mánh khóe. (Cũng đã thêm kích thước lưới, dường như là xu hướng với câu trả lời của Befunge.)


Này Kasran chào mừng đến với trao đổi ngăn xếp codegolf! Câu trả lời này trông tuyệt vời. Giải thích của bạn rất hay và bạn đã liên kết với một trình thông dịch Befunge, điều này thực sự hữu ích cho các ngôn ngữ lạ không phải ai cũng có trình biên dịch (mọi người thường làm những việc như "chạy cái này ở đây").
hmatt1

Befunge là một ngôn ngữ thực sự khó, và bạn phải giữ kích thước của chính mã trong tâm trí khi viết. Mã của bạn trông tuyệt vời và hoạt động. Nhưng nó sẽ giảm kích thước nếu bạn tiết kiệm re a time ở đâu đó?
Ismael Miguel

Tôi không sử dụng bất kỳ hướng dẫn hoặc hành vi cụ thể nào của Funge-98 mà tôi biết, nhưng từ khi tôi viết câu trả lời này, tôi đã học được rằng một số hành vi nhất định của trình thông dịch Befungius không theo tiêu chuẩn - cụ thể là sử dụng #ở một đầu của dòng để bỏ qua nhân vật ở đầu kia ( ví dụ, trong CCBI , #chỉ bỏ qua khoảng không vô hạn ở giữa nó và nhân vật ở đầu kia), phá vỡ chương trình này. Tôi đã không bận tâm để quay lại và sửa chữa trình này với ý nghĩ này.
Kasran

Có một vài 1chữ số trong đó, không được phép
Jo King

4

Pháo đài 135 136 140

*ltG%"The eigh%srum%snine%sfun%stwo-thousands are a time to run\na civilized classroom.\n"*hhZ("teen-hundreds were a time for "".\nThe 

Lưu ý không gian dấu.

Sử dụng khá nhiều thủ thuật tương tự như @Geobits và những người bạn bình luận của anh ấy trong câu trả lời Python để xây dựng chuỗi. Bây giờ cũng sử dụng một số câu trả lời này .

Cái này sử dụng biến tích hợp G, chứa abcdefghijklmnopqrstuvwxyzvà lấy một ít hơn độ dài của nó để tạo ra 25 đầu ra.


1
Đây dường như là 136 byte chứ không phải 135
Trình tối ưu hóa

1
@Optimizer Xin lỗi, tôi nên đọc ghi chú của riêng mình: Tôi đã quên khoảng trống ở đó khi tôi tự dán nó ở đó: S
FryAmTheEggman

4

Hồng ngọc - 152 141

puts"The eight#{e="een-hundreds were a time for "}rum.
The ninet#{e}fun.
The two-thousands are a time to run
a civilized classroom.
"*(?X-??)

http://repl.it/2Om/6


1
Sử dụng thông minh các ký tự của 1,8! Bạn có thể sử dụng String#*để lặp lại các dòng 25 lần thay vì Integer#times.
Anh

@britishtea - đã làm việc một điều trị :)
Mikey

1
Bạn có thể tắt thêm một vài byte bằng cách không gán các dòng đầu tiên. Khoảng cách giữa đặt và một chuỗi ký tự là tùy chọn ( puts"hi"là hợp pháp).
Anh

Chỉ định e bên trong phép nội suy là một liên lạc tốt đẹp.
Wayne Conrad

3

Python, 165 byte

h="hundreds were a time for "
t="The "
for i in h:print t+"eighteen-"+h+"rum.\n"+t+"nineteen-"+h+"fun.\n"+t+"two-thousands are a time to run\na civilized classroom."

Nó thực sự hiệu quả khi độ dài của h là 25, điều đó không có chủ ý. =)


3

Con trăn 2 - 143

Một câu trả lời ngớ ngẩn:

from this import i
a="teen-hundreds were a time for ",".\nThe "
print"The eigh%srum%snine%sfun%stwo-thousands are a time to run\na civilized classroom.\n"%(a+a)*i

Lưu ý rằng tổng số đầy đủ là 162. Tôi đã bỏ qua tất cả from this import i.

Sử dụng thay thế tương tự cho chiến lược thứ ba của tôi, nhưng tôi không thể cưỡng lại việc đăng bài này sau khi phát hiện ra sự vui nhộn của việc nhập từ này :)


+1 Để sử dụng from this import i! Làm thế nào bạn biết về điều đó?
Beta Decay

1
@BetaDecay Tôi thực sự đã chán và quyết định đọc zen của python, vì vậy tôi đã đến phiên dịch của tôi và viết import this. Sau đó tôi nghĩ: "Còn gì nữa trong thismô-đun không?" Thế là tôi gọi dir(this). Lo và kìa, cùng với một từ điển, một chuỗi bị "!"
xáo trộn

3

PHP (175 157156 byte; 152 với unix EOF):

Không phải là giải pháp golf nhất, nhưng chắc chắn thực hiện công việc và nhỏ hơn một số nỗ lực.

Đây là mã:

$a=a;$f='re a time';$r="teen-hundreds we$f for";while($a++<z)echo"The eigh$r rum.
The nine$r fun.
The two-thousands a$f to run
a civilized classroom.
";

Phiên bản cũ:

$a=a;while($a++!=z)echo"The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
";

Điều này hoạt động vì php xoay vòng ký tự và chúng tôi chỉ kiểm tra xem nó có zdừng hay không.

(Một điều tò mò là khi php đến z, nó sẽ chuyển sang aa.)


3
Quy ước chung ở đây là tính các dòng mới chỉ là một byte, trừ khi có lẽ ngôn ngữ của bạn quá cứng đầu, nó chỉ chấp nhận CRLF, đây không phải là trường hợp của PHP.
nyuszika7h

3

Con trăn 2 - 155

Lưu ý: vì các ký tự điều khiển không hiển thị trên SE, tôi đã thay thế nó bằng\x19.

a,b='\nThe ','teen-hundreds were a time for '
print(a+'eigh'+b+'rum.'+a+'nine'+b+'fun.'+a+'two-thousands are a time to run\na civilized classroom.')*ord('\x19')

Phiên bản cơ sở 64:

YSxiPScKVGhlICcsJ3RlZW4taHVuZHJlZHMgd2VyZSBhIHRpbWUgZm9yICcKcHJpbnQoYSsnZWln
aCcrYisncnVtLicrYSsnbmluZScrYisnZnVuLicrYSsndHdvLXRob3VzYW5kcyBhcmUgYSB0aW1l
IHRvIHJ1bgphIGNpdmlsaXplZCBjbGFzc3Jvb20uJykqb3JkKCcZJyk=

Về việc nhập, tôi nghĩ bạn có thể tiết kiệm một chút với from string import *hoặc tuy nhiên nó được gọi bằng Python
FireFly

1
Bạn có thể chuyển "tuổi teen" thành b.
FryAmTheEggman

2
Bạn có thể loại bỏ các []dấu ngoặc trong dòng đầu tiên, nó hoàn toàn tạo ra một tuple và sau đó giải nén nó.
Doorknob

Bạn cũng có thể di chuyểnord('d')//len('aaaa') to before the string so you don't have to bracket it.
FryAmTheEggman

1
@Dennis Chỉnh sửa mới nhất của OP cho phép các dòng mới hàng đầu.
Beta Decay

3

LiveScript - 181

p=(a,b)->"The #{a}teen-hundreds were a time for #b.\n"
each console.log,map (->(p \eigh \rum)+(p \nine \fun)+'The two-thousands are a time to run\na civilized classroom.'),[\A to\Y]

Nhập khẩu bắt buộc:

{each, map} = require 'prelude-ls'

Nếu bạn muốn chạy nó dưới Node.js, cài đặt LiveScript( không livescript ) và prelude-lsgói từ NPM, thay thế alertvới console.logvà chạy lsc prog.ls, nơi prog.lschứa chương trình.


13
Xem quy tắc: "Bạn không thể sử dụng các ký tự 0123456789"
Paul R

2
Bắt đẹp, cố định.
nyuszika7h

2

T-SQL: 206

Làm cho việc sử dụng liên kết chéo trên năm hàng để tạo 25 hàng chọn cụm từ. Các ngắt dòng là quan trọng cho đầu ra.

with c as(SELECT\ N FROM(VALUES(\),($),($),($),($))A(B))SELECT REPLACE('The eigh$rum.
The nine$fun.
The two-thousands are a time to run
a civilized classroom.','$','teen-hundreds were a time for ')FROM c a,c b


2

C, 196 ký tự

Đây không phải là một nhiệm vụ dễ dàng cho ol 'C. Tạo ra mẫu "% steen-trăm ..." giúp tôi tiết kiệm được cả hai ký tự.

Khoảng trắng cho rõ ràng, bao gồm không được tính.

#include <stdio.h>
main(){
  for (char*p="The %steen-hundreds were a time for %s.\n",
           *s="The two-thousands are a time to run\na civilized classroom.",
           *q=p;
       *q++ - 'a';
       puts(s))
   printf(p,"eigh","rum"), printf(p,"nine","fun");
}

2

Ruby, 145

?K.upto(?c){puts"The eigh#{x="teen-hundreds we#{t="re a time "}for "}rum.
The nine#{x}fun.
The two-thousands a#{t}to run
a civilized classroom."}

Giải trình

  • Sử dụng String#uptođể in các dòng 25 lần. Phạm vi "K".."c"là 25 ký tự.
  • Sử dụng phép nội suy Chuỗi cơ bản để rút ngắn các dòng.

2
#{a="The "}thực sự là chi phí cho bạn nhiều nhân vật hơn! #{a}có cùng độ dài vớiThe
Mikey

2

Vợt 173

(let([x"teen-hundreds were a time for "])(for([z(+ #xa #xf)])(displayln(~a"The eigh"x"rum.\nThe nine"x"fun.\nThe two-thousands are a time to run\na civilized classroom."))))

Ung dung:

(let ([x "teen-hundreds were a time for "])
  (for([z(+ #xa #xf)])
    (displayln (~a "The eigh"x"rum.\nThe nine"x"fun.\nThe two-thousands are a
     time to run\na civilized classroom."))))

2

C, 215 203 199 byte

main(a){a<<='\xC'+'\xD';while(a>>=!!a)printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}

Ung dung

main(a)
{
  a<<='\xC'+'\xD';
  while(a>>=!!a)
    printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");
}

Tôi đã sử dụng bit shift để lặp mà không có số nào.

a<<='\xC'+'\xD' đặt a thành 0b1 [25 số không]

a>>=!!a thay đổi đúng một bit cho mỗi lần chúng ta lặp lại vòng lặp

Chỉnh sửa: a bằng argc, vì vậy giá trị của nó là 1 khi chương trình được chạy mà không có đối số. Thay đổi a>>='\xB'-'\xA'thành a>>=!!'\xA'ngắn hơn 4 byte. Ngoài ra văn bản chỉ được hiển thị 24 lần. Đã sửa nó. Đã xóa dấu ngoặc phụ trong while.

Chỉnh sửa 2: đổi !!'\xA'thành !!a. Có vẻ như để làm việc và tiết kiệm 4 byte


1
Bạn có thể sử dụng putsđể lưu nhiều byte hơn.
Spikatrix

2

Rant, 191 byte

Không phải là giải pháp ngắn nhất, nhưng vẫn mát mẻ. Tôi đã viết một chương trình con để viết ba dòng đầu tiên và thiết kế nó để gọi nó với một đối số trống trả về một chuỗi dài 25 ký tự. Sau đó tôi chuyển chiều dài của nó cho bộ lặp.

[pin:][$[_:a]:The [arg:a][sync:;ordered]{thousands a|teen-hundreds we}re a time ][r:[len:[$_:]]]{[step:][$_:eigh]for rum.\N[$_:nine]for fun.\N[step:][$_:two-]to run\Na civilized classroom.\N}

Ung dung:

[pin:]
[$[_:a]:The [arg:a][sync:;ordered]{thousands a|teen-hundreds we}re a time ]
[r:[len:[$_:]]]
{
    [step:]
    [$_:eigh]for rum.\N
    [$_:nine]for fun.\N
    [step:]
    [$_:two-]to run\N
    a civilized classroom.\N
}

Dùng thử trực tuyến

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.