Lập trình cụm từ yêu thích của bạn


28

Chọn một trích dẫn hoặc cụm từ dài chính xác 5 từ, chẳng hạn như Programming puzzles and code golf!.

Viết chương trình, khi được thêm vào chính nó n lần, sẽ xuất ra n + 1 từ đầu tiên của cụm từ của bạn theo thứ tự.

Ví dụ: nếu mã chương trình của bạn là MYPROGvà cụm từ của bạn là Programming puzzles and code golf!, đang chạy ...

  • MYPROG nên đầu ra Programming
  • MYPROGMYPROG nên đầu ra Programming puzzles
  • MYPROGMYPROGMYPROG nên đầu ra Programming puzzles and
  • MYPROGMYPROGMYPROGMYPROG nên đầu ra Programming puzzles and code
  • MYPROGMYPROGMYPROGMYPROGMYPROG nên đầu ra Programming puzzles and code golf!

Áp dụng hơn 4 lần là không xác định, chương trình của bạn có thể làm bất cứ điều gì.

Quy tắc

  • Cụm từ của bạn phải là ngữ pháp có nghĩa tiếng Anh. Tốt nhất là nó nên được viết hoa và chấm câu đúng.
  • Cụm từ của bạn có thể dài bất kỳ nhưng entropy của nó, theo tính toán của http://www.shannonentropy.netmark.pl/ , có thể không nhỏ hơn 3,5 .
    (Dán cụm từ của bạn, nhấn Tính toán và tìm H (X) cuối cùng .)
  • Cụm từ của bạn chỉ có thể chứa các ký tự ASCII có thể in (hex 20 đến 7E). Mã của bạn chỉ có thể chứa ASCII có thể in và các tab và dòng mới.
  • Cụm từ của bạn phải chứa chính xác 5 từ duy nhất và 4 khoảng trắng. Tất cả các không gian được tính là một phần của các từ. Không gian là ranh giới từ. Họ có thể không dẫn đầu hoặc theo dõi; Rốt cuộc nên có một từ nhưng cuối cùng.
  • Đầu ra cũng nên chứa một khoảng trắng giữa các từ. Đầu ra ở mỗi bước nối thêm có thể chứa dấu cách nhưng không phải khoảng trắng ở đầu.
  • Đầu ra cho thiết bị xuất chuẩn. Không có đầu vào.

Chấm điểm

Điểm của bạn là độ dài tính bằng byte của chương trình không được nối thêm ban đầu của bạn. (ví dụ: MYPROGđiểm 6)

Vì đây là môn đánh gôn, điểm số thấp nhất sẽ thắng.


21
aww, các yêu cầu entropy và tính độc đáo giết chết ý tưởng của tôi về "trâu" như là một mục.
Sparr

4
Tôi sẽ có rất nhiều niềm vui ở Piet cho đến khi "Mã của bạn chỉ có thể chứa ASCII có thể in và các tab và dòng mới." :(
Sp3000

3
@ Sp3000 Bạn được chào đón để đưa ra một câu trả lời danh dự. Tôi rất thích xem giải pháp của Piet :)
Sở thích của Calvin

Đây là tình huống duy nhất mà độ tinh khiết của Haskell chính xác là vấn đề ...
Rhymoid

Ngữ pháp có nghĩa tiếng Anh Quá không rõ "tiếng Anh có nghĩa ngữ pháp" là gì do cách hiểu khác nhau về ngữ pháp và ý nghĩa.
MilkyWay90

Câu trả lời:


6

CJam - 24

"TheguywasnotI"Lm3<]S*:L

Hãy thử nó tại http://cjam.aditsu.net/

Giải trình:

Lmxóa các chữ cái có trong L (ban đầu "") khỏi "TheguywasnotI"
3<lấy 3 chữ cái đầu tiên
]thu thập nội dung của ngăn xếp trong một mảng
S*nối với mảng bằng dấu cách
:L gán chuỗi kết quả cho L (cũng để nó trên ngăn xếp )

Phiên bản cũ (28 byte):

"He is but a dog."S/W):W=]S*

Giải trình:

S/chia theo
W):Wgia số không gian W (ban đầu W = -1)
=sẽ nhận được từ W'th
]thu thập nội dung của ngăn xếp trong một mảng
S*kết hợp với mảng bằng cách sử dụng khoảng trắng làm dấu phân cách


Ngôn ngữ này thực sự thú vị. Giống như họ nói, "Bạn học về một ngôn ngữ mới mỗi ngày" ... hoặc đại loại như thế. Làm tốt lắm!
Brobin

Chấp nhận điều này thay vì câu trả lời ngắn không kém của Dennis vì điều này đã được đăng đầu tiên.
Sở thích của Calvin

28

Piet (câu trả lời danh dự)

nhập mô tả hình ảnh ở đây

Rắn đi xuống, chạy qua phải qua màu xanh và nhập lại qua màu xanh lá cây. In ra "Trái cây bay như một quả chuối."

Tôi đã sử dụng PietCreator để thực hiện điều này, nhưng bạn có thể dùng thử tại đây . Làm lại các chương trình của Piet là một nỗi đau, vì vậy tôi đã bắt đầu ở 35x35 và tiếp tục theo cách đó, có nghĩa là tôi đã sử dụng nhiều codel hơn mức tôi cần.

Phiên bản kích thước thực tế

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


11

> <> (42)

Cá thực sự là thú cưng tuyệt vời nhất. Một số người giữ bọ như thú cưng do thiếu logic không thể hiểu được. Chương trình này làm hết sức để lý luận với những người như vậy.

!v'?od gub yna nac tahW;'00p!
<<|ov!
voo <

Lưu ý rằng đây không phải là dòng mới trong chương trình. Đầu ra đầy đủ được đảo ngược trong dòng đầu tiên; cụm từ hoàn chỉnh là "Bất kỳ lỗi nào có thể làm gì?" (entropy 3.58418).

Giải thích đầy đủ:

Đây là một trong những chương trình thú vị hơn> <> tôi đã viết, vì đây là chương trình đầu tiên sử dụng sự phản chiếu. Dòng đầu tiên là nơi thịt của chương trình.

!v là không có, như ! các hướng dẫn tiếp theo bị bỏ qua.

'?od gub yna nac tahW;' lưu trữ cụm từ đầy đủ trên ngăn xếp (ngược lại vì mỗi chữ cái được đẩy lên ngăn xếp theo thứ tự được viết, do đó nó phải được đảo ngược để được bật ra độc đáo).

00plà nơi phép thuật thực sự bắt đầu xảy ra. Lưu ý rằng nó không chỉ lưu trữ cụm từ, nó cũng được lưu trữ a ;.00pchèn ký tự trên cùng vào ngăn xếp vào chương trình ở vị trí (0, 0), vì vậy bây giờ ký tự đầu tiên của chương trình là một; .

Đoạn kết thúc !bỏ qua dấu chấm phẩy và di chuyển con trỏ lênv , điều hướng chương trình chảy xuống.

Từ đây trở đi, tất cả chỉ là thói quen in ấn. Vì không có dòng mới, các phần phụ liên tiếp của chương trình chỉ cần thêm hai dòng cuối cùng, vì dòng đầu tiên sẽ ở bên phải củavoo < và do đó sẽ không bao giờ được thực thi.

Cuối cùng, con trỏ được hướng ra phía dưới bên trái của chương trình và quay ngược về phía trên bên trái, nơi ;được chèn trước đó, kết thúc chương trình.


Một phút trước đây là không hợp lệ về mặt kỹ thuật nhưng tôi chỉ thay đổi thông số kỹ thuật để các dòng mới (và tab) được cho phép trong mã (đó là những gì tôi muốn ban đầu).
Sở thích của Calvin

Ôi, xấu của tôi, hoàn toàn bỏ lỡ rằng áp dụng cho nguồn, không chỉ cụm từ. Tôi rất vui vì đó là ý định,> <> các chương trình dựa vào các dòng mới khá nhiều.
Mike Precup

Nếu bạn muốn đánh golf xuống một chút, bạn có thể sử dụng một cụm từ có 11 chữ cái và không có ký tự lặp lại, chẳng hạn như "It is by a rope."cụm từ của bạn lặp lại các ký tự, vì vậy nó có entropy thấp hơn mức có thể.
isaacg

Vấn đề là về cơ bản, mỗi đầu ra phải có cùng độ dài để in độc đáo, vì> <> không thể phát hiện dấu cách dễ dàng. Tôi đã không thể tìm thấy một cái ngắn hơn.
Mike Precup

2
@isaacg Cá nhân tôi thích cụm từ của Mike;)
Sở thích của Calvin

10

Con trăn 66

i='i'in dir()and i+1;print("Tfpcfhaialetgny"[i::5],end=" ."[i>3]);

Entropy: 3.61635

Ouput:

The fat pig can fly.

Cảm ơn @JasonS và @grc về các mẹo rút ngắn phần phát hiện biến.

Cập nhật: Đừng xem câu trả lời của JasonS cho một thủ thuật lừa đảo độc ác đã đẩy nó xuống còn 55 byte. :)


i=locals().get('i',-1)+1;là -5 byte
Jason S

Đánh tôi đi! Tôi sẽ sử dụng i='i'in dir()and i+1. Chỉnh sửa: quy tắc thay đổi.
grc

Chà, đó là một -4
Jason S

60 byte với Python 2:i='i'in dir()and i+1;print"Tfpcfhaialetgny"[i::5]+" ."[i>3],
nyuszika7h

9

Python 3, 55 (tiền thưởng 67)

# 55 bytes, H(X)=3.72, Based on bitpwner's 66. "Mix dog and cat fur."
i=0;print("Mdacfionauxgdtr"[i::5],end=" ."[i>3]);i+=1;i

# 67 bytes, H(X)=4.28. "Thanks for supporting Python development."
q=b"qx!%%0077C";a,b,*q=q;print((str(credits)*2)[49:][a:b],end='');q

# 60 bytes, H(X) = 3.51. "Fix the bed old pal"
s="Fixthebedoldpal";a,b,c,*s=s;print(a+b+c,end='. '[s>[]]);s

Bạn có nghĩa là nó kết thúc xung quanh?

OK, một số lời giải thích về # 2 (spoilers)

  • creditslà một python dựng sẵn có chứa văn bản tôi muốn sử dụng. Đó là một loại đặc biệt với một định dạng reprđể bạn có thể chỉ cần gõ nó trong trình thông dịch tương tác và thấy đầu ra đẹp, vì vậy tôi phải làm str()điều đó. Tôi đã dành khá nhiều thời gian để xem các nội dung cho việc này và "Cảm ơn vì đã hỗ trợ phát triển Python" vì một cụm từ quá hay để bỏ qua.

  • Vì có rất nhiều văn bản và tôi chỉ muốn 5 từ của mình, tôi muốn lưu trữ vị trí bắt đầu và kết thúc của mỗi chuỗi con. Đó là trong các byte ở đầu. bytescác đối tượng trong python3 hoạt động như các mảng số nguyên khi bạn sử dụng các thao tác tuần tự trên chúng.

  • Nhưng mã chỉ có thể chứa các ký tự có thể in được, vì vậy tôi phải tìm một phần bù (49) có thể làm cho tất cả các giá trị vị trí của tôi có thể in thành ký tự.

  • "Cảm ơn" ở gần đầu chuỗi trong khi các từ khác ở gần cuối, điều đó có nghĩa là các giá trị vị trí của tôi quá xa nhau trong phạm vi có thể in được. Việc bổ sung chuỗi bằng 2 tạo ra một bản sao khác của "Cảm ơn" gần với các từ khác.

  • Lấy [49:]lát cắt của chuỗi là một byte nguồn ít hơn so với việc thêm 49 vào cả a và b.

  • Cấu trúc được sử dụng trong cả ba câu trả lời là x=<value>;dostuff and increment;x. Dấu vết xkhông làm gì cả, nhưng khi kết hợp với bản sao tiếp theo của mã, nó biến thành xx=<value>ngăn không cho bộ xđếm bị ghi đè.

  • a,b,*q=q là trình tự giải nén Python 3 hoàn toàn bình thường.


+1. Thủ đoạn độc ác. :) Tôi có thể cập nhật nó vào câu trả lời của mình không?
Vectorized

Chà, tôi đã sử dụng phần giữa của bạn
Jason S

Tôi hiện đang ngạc nhiên trước câu trả lời thứ 2 của bạn. Vì vậy, nhiều thủ đoạn đóng gói vào nó.
Vectorized

2
Bạn có thể vui lòng cho tôi biết, câu trả lời thứ hai hoạt động như thế nào?
sajas

8

Con trăn 2 (37)

Sau khi Sarah trở thành chủ tịch của chương Mensa địa phương, cô trở thành tâm điểm chú ý lãng mạn từ những người đàn ông đang tìm kiếm một đối tác thông minh. Mỗi ngày, Sarah sẽ cố gắng tạo mối liên hệ cá nhân, nhưng những người đàn ông sẽ chỉ thăm dò cô về những câu hỏi triết lý. Thất vọng vì không ai quan tâm đến khía cạnh tình cảm của mình, cô thốt lên ...

i=4;print"mniIMeosQy!t"[i::5],;i-=1;i

Đầu ra:

My
My IQ
My IQ is
My IQ is not
My IQ is not me!

Các entropy là H(x)=3.5chính xác.

Tín dụng cho Jason S., người trả lời tôi về cơ bản đã sử dụng bán buôn. Thủ iithuật bao vây là tuyệt vời.


Tốt đẹp! Đạo cụ để tìm một cụm từ ngắn hơn với entropy đúng. Tôi từ bỏ. Cũng quên rằng py2 trả trước các printkhông gian thay vì nối thêm chúng
Jason S

Đây là ngắn gọn đáng kinh ngạc cho một câu trả lời Python! Làm tốt.
isaacg

Bạn có thể xóa dấu phẩy mà bạn có ở giữa chương trình để giảm xuống còn 36 ký tự.
xleviator

8

C - 65

Bình luận lạm dụng :)

char*z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//

Do đó, các dòng mới rất quan trọng và mã phải được thêm vào như sau:

char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//...

Đây là một giải pháp tốt đẹp!
MilkyWay90

4

CJam, 24 byte

"LwOtmiaKoezs"W):W>5%]S*

Nếu chạy năm lần, nó in Liz là OK với tôi . Không bao gồm dấu chấm câu, xin lỗi.

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

"LwOtmiaKoezs"  " Push that string. ";
W):W            " Push W (initially -1), increment and save the result in W. ";
>               " Shift that many characters from the string. ";
5%              " Select every fifth character, starting with the first. ";
]S*             " Wrap the stack in an array and join its strings using spaces. ";

Ý tưởng tuyệt vời, mặc dù cụm từ này hơi yếu: p
aditsu

Tôi thừa nhận điều đó, nhưng nó phải là xxx xxx xx xx xx , không có chữ cái lặp đi lặp lại. Đó là câu duy nhất tôi có thể nghĩ ra ít nhất một chút ý nghĩa ...
Dennis

Thế còn "Mặt trời đã ổn với tôi"? Bạn cũng có thể thay thế "Mặt trời" bằng một từ hoặc tên khác.
aditsu

Điều đó tốt hơn, cảm ơn.
Dennis

3

Bình thường , 32

p?kqZ4d@P"It is by a rope."dZ~Z1

Cụm từ: "Đó là bởi một sợi dây."

Entropy: 3,5

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

p có nghĩa là in với dấu phân cách được chỉ định.

Đối số đầu tiên ?kqZ4d, đưa ra dấu phân cách. ?kqZ4dcó nghĩak if Z==4 else d . k'', trong khi d' ' .

Đối số thứ hai, giá trị được in, được tạo bằng cách chia ( P) trên dấu cách ( d) và lập chỉ mục vào danh sách đó ( @) tại Z.

Cuối cùng, Zđược tự động khởi tạo thành 0, được tăng thêm 1 ( ~Z1).


2
Tôi không thể nghĩ đến một bối cảnh mà giai đoạn này sẽ tự nhiên phù hợp với ^^
flawr

1
@flawr "Tôi đã sống bóng ở đâu?" "Đó là bởi một sợi dây."
isaacg

3

Golf, 53

Điều này thật thú vị.

{'1'-print}:puts;.'You; are; not; a; duck.'';'/\,=\1+

Cụm từ: "Bạn không phải là một con vịt." (điều này hoàn toàn đúng; entropy 3.5110854081804286)

Giải trình:

Ngăn xếp sẽ bắt đầu như ''trong lần "chạy" đầu tiên (vì không có STDIN nào được cung cấp). '1's được gắn vào đây để biểu thị số lần mã được dán vào.

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: '' ''
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (0)
                              # Stack: '' [words] 0
=                             # Stack: '' 'You'
\1+                           # Stack: 'You' '1'

Bây giờ những gì xảy ra trên lần chạy thứ hai:

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: 'You' '1' '1'
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (1)
                              # Stack: 'You' '1' [words] 1
=                             # Stack: 'You' '1' ' are'
\1+                           # Stack: 'You' ' are' '11'

Và như vậy.

"Nhưng," bạn đang nghĩ, "làm thế nào để bạn có được số 1 không xuất ra?" Ah, đó là phần vui nhộn. Golfscript thực hiện puts(được gọi khi chương trình kết thúc) như thế này:

{print n print}:puts;

Tôi chỉ đơn giản là thay đổi nó thành

{'1'-print}:puts;

Vì vậy mà các 1s bị chặn từ đầu ra cuối cùng.


3

J - 42 char

Tôi có thể đi cho một cụm từ ngắn hơn, nhưng tại sao? Nó sẽ không phải là sở thích của tôi.

(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '

Điều này hoạt động vì tính đối ngẫu monad / dyad của J: mọi động từ có thể được gọi dưới dạng một monad với một đối số bên phải của nó hoặc như một dyad với một đối số ở bên trái và một bên phải.

Hãy xem xét phiên sau với J REPL:

   'You multiplied 6 by 9. '
You multiplied 6 by 9.
   'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
You multiplied 6 by 9. You multiplied 6 by 9.
   ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '   NB. break into words
+---+----------+-+--+--+---+----------+-+--+--+
|You|multiplied|6|by|9.|You|multiplied|6|by|9.|
+---+----------+-+--+--+---+----------+-+--+--+
   (#\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '             NB. count off
1 2 3 4 5 6 7 8 9 10
   (6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '         NB. mod 6
1 2 3 4 5 0 1 2 3 4
   (1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
1 0 0 0 0 0 1 0 0 0
   (#~ 1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '  NB. select
+---+----------+
|You|multiplied|
+---+----------+
   (#~ 1 = 6 | #\)&.;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. ' NB. undo ;:
You multiplied

Ở đó, ,được coi là một dyad, bởi vì nó nằm giữa hai đối số và (#~1=6|#\)&.;:là một đơn nguyên vì nó không có đối số trái. Vì vậy, nếu chúng ta có một động từ có thể hoạt động như ,khi dyadic và (#~1=6|#\)&.;:khi monadic, chúng ta sẽ được thiết lập.

Như bạn có thể đã đoán, một sự kết hợp như vậy tồn tại và nó trông như thế :. Monadic f :gtương đương với f, và nó tương đương vớig khi dyadic. Điều này giải quyết vấn đề.

Ví dụ, bạn có thể tự thử tại tryj.tk :

   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by 9.

Và vâng, bản chất của nghịch đảo ;:làm cho nó không có dấu cách.

Sử dụng It is by a rope.như cụm từ cho 35 char : (#~1=6|#\)&.;: :,'It is by a rope.'. Chúng tôi không cần không gian kéo dài như chúng tôi làm cho câu của tôi, vì ;:lý do phức tạp, dựa trên.


3

BBC cơ bản, 40

Bao gồm một dòng mới. Sẽ là 30 nếu các từ khóa có thể được coi là mã thông báo thay vì ASCII.

Tôi bắt gặp bạn gái của tôi đang ngủ với người bán sữa, vì vậy tôi đã bỏ rơi cô ấy và tôi đang ngủ với chị gái để trả thù. As my ex do I!(năm chữ "hai chữ" với các ký tự duy nhất) không đủ entropy, vì vậy tôi đã thêm nụ cười tặc lưỡi ở cuối để làm cho entropy chính xác 3,5. Rốt cuộc, trong thực tế tôi có một cuộc sống khá bình thường, không phải là một cốt truyện opera xà phòng kỳ lạ.

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

Lặp lại chương trình 5 lần chúng tôi nhận được

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

Chỉ có 5 READcâu lệnh được thực thi và 5 mục dữ liệu đầu tiên được đọc từ DATAcâu lệnh đầu tiên . phần còn lại của dữ liệu là dư thừa. Đầu ra:

  (once)
  As 
  (5 times)
  As my ex do I:-P 

2

Hồng ngọc, 50

puts'The fat pig can fly.'[0..File.size($0)/12-1]#

Điều này sử dụng độ dài của chính nó để xác định có bao nhiêu từ để in. Lặp đi lặp lại của nó được bỏ qua bằng cách kết thúc trong nhân vật bình luận #,. Cụm từ mượn từ bitpwner : thật tiện lợi khi có một cụm từ ngắn với cùng số lượng chữ cái trong mỗi từ.

Vì mỗi từ + kết thúc là 4 ký tự, nên công thức sẽ là, ví dụ cho chương trình dài 56: (File.size($0)/56)*4 - 1nhưng tôi có thể phân chia trước thời hạn 56/4 = 14, vì vậy File.size($0)/14 - 1, lưu một vài ký tự. 50không phải là bội số của 4, nhưng 12đủ gần cho phạm vi cần thiết.


2

Chip , 165 + 3 = 168 byte

+3 cho cờ -w

| ,z `Z`Z  `Z
| |ZZZ>Z>ZZZ>ZZZZ
>((((((((((((((((
|)-)))-)-)))-))))g
|)d)xx-x-)xx-))x)e
||b+))-x-x))-x)xc
|`v))xa(-x(x-((^d
|*`.))d| b | b
|Z~<b( |~Zf|
>~T| | |   |

"Tôi đã thắng một bộ đồ màu đỏ" (3.5) (Tôi thực sự chưa giành được bất kỳ thứ gì như vậy) (... chưa)

Lưu ý dòng mới, vì vậy bản sao được nối xuất hiện bên dưới mã hiện có.

Hãy thử trực tuyến! (bản gốc)
Hãy thử trực tuyến! (bản gốc, cộng với tất cả bốn bản sao)

Đây là một chút lộn xộn. Nó chỉ ra rằng bit khó nhất là điều kiện chấm dứt. (Lặp lại đầu tiên của tôi đã in (các) từ, theo sau là một luồng vô tận các byte rỗng ...).

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

Đầu tiên cụm từ:
12 ký tự duy nhất + 4 dấu cách = chính xác 3,5 entropies.

Và mã:
Mỗi bản sao in từ đầu tiên, sau đó báo cho bản sao bên dưới để in từ tiếp theo. Nếu chỉ có một phiên bản, không có bản sao thứ hai, vì vậy không có gì ngoại trừ từ đầu tiên được in.

Nếu có hai bản sao, cả hai sẽ in từ đầu tiên đồng thời (các byte được OR'd với nhau để nó ổn), thì chỉ có bản sao thứ hai sẽ in từ thứ hai.

Nếu có tất cả năm bản sao, tất cả sẽ in từ đầu tiên, v.v., và bản sao thứ năm sẽ tự in từ cuối cùng.

Mạch chấm dứt sẽ chấm dứt chương trình ngay khi tất cả các bản sao không được in tích cực.


1

Ruby, 63

+1;puts"See Dick and Jane run!"[/(.*?( |!)){#$.}/]if($.+=1)==$.

1

Perl, 37

print qw(My IQ is not me!)[$i++].' ';

Tương tự như những gì đã có, nhưng tận dụng qw của perl để lưu thêm một vài ký tự.


1

Độ dài tin nhắn Rebmu + 27

Có phải chúng ta đã đi với "IQ của tôi không phải là tôi!" đó sẽ là 43. Nhưng tôi ủng hộ thông điệp này:

uV?'s[S[{The}{rebellion}{against}{software}{complexity.}]]proTKsPROsp

Rebol tương đương / Đỏ:

unless value? 's [
    s: [{The}{rebellion}{against}{software}{complexity.}]
]

print/only take s
print/only space

Rebol có 3 điều kiện cơ bản: IF, EITHER và UNLESS. UNLESS tương đương với NẾU KHÔNG nhưng có thể rõ ràng hơn: "Luôn luôn thực hiện UNLESS sau đây, điều kiện này xảy ra là đúng."

Trong trường hợp này, điều kiện là chúng tôi kiểm tra là xem ký hiệu S đã được đưa ra một giá trị trong bối cảnh hiện tại chưa. Chúng ta phải sử dụng một trích dẫn về nó, bởi vì cố gắng sử dụng một S không được trích dẫn trong một biểu thức điều kiện sẽ đánh giá nó và có thể gây ra lỗi. ( value?Không trích dẫn thông số của nó theo mặc định bởi vì bạn có thể muốn có mà biểu tượng bạn đang kiểm tra được trong một biến, ví dụ như sym: 'ssau đó if value? sym [...]sẽ thực sự kiểm tra xem S được định nghĩa, không SYM)

Chỉ lần dán đầu tiên của chương trình sẽ gán chuỗi chuỗi cho S. Các lần dán liên tiếp sẽ lấy một chuỗi từ phần đầu của chuỗi và chuyển nó sang IN / CHỈ sẽ in đối số của nó mà không cần thêm nguồn cấp dữ liệu.

(Lưu ý: IN / CHỈ là một cách thay thế được đề xuất để nói PRIN, đang được xem xét trong Rebol 3 và Red; một sự thay thế in hiện đang được thử nghiệm trong Rebmu.)


1

AHK , 44 byte

i++
Send % SubStr("He is an OK ex",i*3-2,3)

Lưu ý dòng mới ở cuối. Điều thông minh duy nhất ở đây là chuỗi này là tất cả các từ có 3 chữ cái để chúng ta không phải phân chia bất cứ thứ gì. Thay vào đó, chúng tôi chỉ cần kéo một chuỗi con dựa trên i. Đầu ra là màn hình hoạt động như thể nó được gõ trên bàn phím.


0

Javascript (53)

Tôi đã lấy văn bản từ aditsu vì tôi không làm bất cứ điều gì lạ mắt với văn bản, do đó các từ được chọn có phần không liên quan đến giải pháp (ngoại trừ số byte).

var i=i|0;alert("He 0is 0but 0a 0dog".split(0)[i++]);

alerttính trong trường hợp này? Chỉnh sửa: Đọc các quy tắc có thể không vì tôi không tham gia chuỗi có khoảng trắng. Tôi sẽ thêm không gian để làm cho nó công bằng.

Cũng lưu ý rằng đắt tiền varthực sự có liên quan trong trường hợp này.


Bất cứ ai có thể giải thích tại sao var i|=0;KHÔNG làm việc ở đây ???
flawr

@flawr Bạn không thể làm |=hoặc tương tự với var. Nếu không var, bạn có được a ReferenceError: i is not defined. var i=i|0mở rộng đến var i=undefined|0, và undefined|0rõ ràng 0.
nyuszika7h

Điều này hoạt động vì cẩu var i=i|0tương đương với var i;i=i|0. Đó là lý do tại sao bạn không nhận được lỗi tham chiếu. Lý do nó sẽ được đặt thành 0 lần đầu tiên là những gì @ nyuszika7h nói.
Ingo Bürk

1
Nhưng điều này sẽ cảnh báo các từ riêng biệt.
tự hào

0

Perl, 43 56

print substr'Mine was not Red 5!',4*$i++,4;

Tôi chấp nhận rằng tôi không thể giành chiến thắng này. Nỗ lực ban đầu của tôi giải thích tại sao:

@a=('This',' code',' is',' too',' long.');print$a[$i++];

0

Lua, 77

Một giải pháp khá đơn giản:

i=(i or 0)+1;io.write((i==1 and""or" ")..("Thebigfoxwasup."):sub(3*i-2,3*i))

(H (X) = 4,23)


0

Javascript, 138

g=this;clearTimeout(g.t);g.i|=0;i++;g.t=setTimeout(
    function(){console.log(["I'll","sleep","when","I'm","dead."].slice(0,i).join(' '))},0);

(dòng mới bổ sung được thêm vào chỉ để đọc)

In I'll sleep when I'm dead. Sử dụng bộ hẹn giờ để đảm bảo đầu ra chỉ được in một lần


0

Bash thuần túy, 51 byte

a=(All you need is Love!)
printf "${i:+ }${a[i++]}"

H (X) = 3.59447

Điều này có thể được giảm bớt một chút bằng cách đánh cắp một trong những cụm từ ngắn hơn, nhưng tôi rất vui khi được gắn bó với Descartes ' câu nói nổi tiếng nhất của Larton của . (Xin lỗi @Descartes, nhưng tất cả các từ cần phải là duy nhất).

Đầu ra:

$ ./phrase.sh 
All$ cat phrase.sh phrase.sh phrase.sh > phrase3.sh
$ chmod +x phrase3.sh 
$ ./phrase3.sh 
All you need$ 
$ cat phrase.sh phrase.sh phrase.sh phrase.sh phrase.sh > phrase.sh
$ chmod +x phrase5.sh 
$ ./phrase5.sh 
All you need is Love!$ 

Cần quan tâm để chèn khoảng trắng giữa các từ, nhưng không có khoảng trắng ở đầu hoặc cuối.

Dựa vào thực tế là trong bash, các biến không xác định, khi được mở rộng dưới dạng chuỗi có giá trị "", nhưng khi được mở rộng một cách hợp lý có giá trị 0.


5 từ được yêu cầu là duy nhất ...
trichoplax

Vì mã của bạn có vẻ đủ linh hoạt để xử lý bất kỳ cụm từ 5 từ nào, tôi chắc chắn bạn có thể nghĩ ra một từ có entropy bắt buộc là 3,5 (quá nhiều chữ cái kép trong từ này ...).
trichoplax

@githubphagocyte Tôi đã hy vọng bạn sẽ cho tôi lợi ích của việc làm tròn ;-) Ok, tôi đã sửa nó với một phần phụ !bây giờ - dường như thực hiện thủ thuật.
Chấn thương kỹ thuật số

0

PHP 89 78 char

Nó hơi dài dòng và chắc chắn sẽ không thắng, nhưng dù sao thì nó cũng rất vui. Đây là những gì tôi nghĩ ra

Cụm từ:

code golf is pretty fun

Entropy = 3,82791

Mã số:

<?
$i=(isset($i)?$i+1:0);
$w=["code","golf","is","really","fun"];
echo $w[$i].";

Chơi gôn

<?$i=(isset($i)?$i+1:0);$w=["code","golf","is","really","fun"];echo $w[$i].

0

Python3 - 122 byte

Mở cửa khoang pod [HAL]

Tôi đoán tôi sẽ kiếm được một số tín dụng mọt sách với cái này. Nếu chỉ có câu hỏi sẽ cho phép thêm một từ ...

Những gì chương trình của tôi làm là lấy tên tệp (p.py là cơ sở) và kiểm tra số lần tên cơ sở được lặp lại. Sau đó, nó cắt lát từ một chuỗi nthời gian. nlà số ps trong tên tệp.

import sys,re
for i in range(len(re.findall(re.compile('p'),sys.argv[0]))):print('Otpbdphoaoeedyon   r    s'[i::5],end='')

~ $ python p.py
Open

~ $ python pp.py
Open the

~ $ python ppp.py
Open the pod

~ $ python pppp.py
Open the pod bay

~ $ python ppppp.py
Open the pod bay doors

Lợi ích của regex là chương trình có thể được gọi là bất cứ thứ gì bạn thích và nó vẫn hoạt động (cung cấp cho bạn thay đổi tên cơ sở trong mã): chương trình ban đầu của tôi được gọi là golfed.py.


0

05AB1E , 21 byte (Không lọc)

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?

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

Sử dụng:

This works for literally anything. 
H(x) = 4.02086

Giải trình

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?
“€Œ‰‹€‡Øš‹É.“ª        # Pushes "This works for literally anything."
              #       # Split on spaces
               ¾è     # get element at index of counter_variable (default 0)
                 ¼    # Increment the counter_variable
                  ?   # Print the selected element
                   ð? # Prints a space

Không thấy điều này, được đăng gần giống với “€í€Ü€…‚¿‹·“hehe
Magic Octopus Urn


0

SmileBASIC, 54 byte

DATA"Does"," anybody"," have"," a"," key?
READ W$?W$;

Tôi đã thích "Cát có thể ăn được." nhưng điều đó thất bại trong bài kiểm tra entropy bằng cách nào đó. Tất nhiên tôi có thể chọn một cụm từ ngắn hơn nhưng điều đó thật nhàm chán.

Các READtừ khóa đọc một giá trị từ DATAvà lưu trữ nó trong một biến. Sử dụng READlại sẽ nhận được các mục tiếp theo, và như vậy.


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.