Có một cái lỗ dưới đáy biển


48

Trong khi cố gắng (và thất bại) đã thuyết phục con trai sơ sinh của tôi ăn bữa tối của mình, tôi đã thử hát cho nó nghe. Giữa chừng bài hát này tôi nhận ra cấu trúc công thức có thể tự cho mình chơi golf!

Nhiệm vụ là viết một chương trình hoặc chức năng chấp nhận không có đầu vào và tạo ra văn bản sau:

There's a hole in the bottom of the sea
There's a hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea

There's a log in the hole in the bottom of the sea
There's a log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea

There's a bump on the log in the hole in the bottom of the sea
There's a bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea

There's a frog on the bump on the log in the hole in the bottom of the sea
There's a frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea

There's a wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea

There's a hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea

There's a fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea

There's a flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea

There's a smile on the flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a smile on the flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea

Quy tắc thử thách:

  • Văn bản có thể được in hoặc trả lại dưới dạng đầu ra chức năng
  • Mỗi câu được phân tách bằng một dòng trống duy nhất
  • Trailing khoảng trắng là OK miễn là nó không thay đổi bố cục (vì vậy không có khoảng trắng hàng đầu hoặc khoảng trắng thừa giữa các từ)
  • Trailing newlines cũng OK.
  • Không có dòng mới hàng đầu.
  • Tất cả các ngôn ngữ đều được hoan nghênh và đây là , vì vậy câu trả lời ngắn nhất tính theo byte cho mỗi ngôn ngữ sẽ thắng!

6
Tương tự như Có một bà già (những thử thách tương tự khác, ví dụ như điều này đã bị đóng cửa như là bản sao, mặc dù tôi không nghĩ họ nhất thiết phải như vậy.)
Jonathan Allan

6
Ho, ro, boglin 'bog, bog down in the thung lũng-o.
fnɛtɪk

4
Để so sánh (mặc dù không phải là ngôn ngữ lập trình) gzip -5nén nó thành 186 byte ( bzip2xzdường như còn tệ hơn).
Daniel Schepler

2
Xin chúc mừng, từ một phụ huynh phát triển khác :)
AJFaraday

1
Tôi muốn chuyển thể bài hát này thành 05AB1E ... "Có một lỗ hổng trong oh-five-ay-bee-one-ee!"
Bạch tuộc ma thuật Urn

Câu trả lời:


23

SOGL , 103 94 93 byte

Ψ ~Δ№Q‘离vζh‛←&M⁶╥7[P≈╔6≡⁸(φΔ\⅔Σ‚>≡ā⁷⁽○¹‘Ξ⁵K4s³‘⁽Bθ2n{@∑" the ”+Κ:bΚē‽:C}TPb"n@²‘+Tō, upcPøP

Hãy thử nó ở đây!

...‘                 push "bottom of the sea" - kept for the loop, here for 
    ...‘             push "hole in log in bump on frog on wart on hair on fly on flea on smile on"
        ...‘         push "there's a "
            ⁽        uppercase the 1st letter of that
             B       save "There's a " in B
              θ      split the long data string on spaces
               2n    split in arrays of length 2

{                     for each of those:
 @∑                   join the current array with spaces - e.g. "hole in"
   " the ”+           append " the " to it
           Κ          prepend that to "bottom of the sea" (or whatever it is now)
            :         create a copy
             bΚ       prepend B to it - finishes current line
               ē‽:C}  if (E++), save a copy of that in C (for the last line)

TP                   print the current line twice
  b"...‘+            B + "hole" - "There's a hole"
         T           output that, keeping item
          ō,         output ", "
             up      print the kept item lowercased
               cP    print the contents of C
                 øP  print an empty line

14
Nhưng .... nhưng thế nào?
Một sốShinyObject

8
Đáng kinh ngạc. Làm thế nào thậm chí--
Austin Burk

1
HNQ đình công một lần nữa! : \
Xù xì

4
Bạn có phiền thêm một lời giải thích? Tò mò để xem làm thế nào nó hoạt động.
Kevin Cruijssen

@KevinCruijssen đã thêm
dzaima

19

Stax , 90 87 75 byte

¥▌▼h4█☻■Ω1gçΔ¶Zjµ│☺X▄)/╞▄╒)¥jêLqα╧ñu┌⌂½╧ûⁿ↕O◘╔╪kl<æàbπïfuσ♪╫qΓ╪ûQ├╘Te♥Æó♣ƒE

Chạy và gỡ lỗi nó

Giải nén, không được chỉnh sửa và nhận xét nó trông như thế này.

`;$w]i"50h1&V~OP>F$`            compressed literal for "There's a hole in the bottom of the sea"
X                               store in register X without popping
zG                              push an empty string and jump to the target (trailing }) 
`hfUiVx}.|j~vG12])Bxk?v zF`j    split "log bump frog wart hair fly flea smile" into array of words
F                               for each word, execute the following
  i. o. i?                      (i ? " o" : " i") where i is the 0-based iteration index
  +                             concatenate to the word
  `_o9!`+                       concatenate "n the "
  G                             jump to target below, resume next foreach iteration when finished
}                               this is the target of `G`, execution resumes when finished
  As|@                          insert substring at position 10
  QQ                            peek and print with newlines twice
  x14(                          trim string to leftmost 14 characters
  q                             peek and print without newlines
  ., p                          print ", " without newline
  vP                            lowercase 14 characters and print with newline
  xP                            push value of register X, then print with newline
  zP                            print blank line

Chạy cái này


2
Bạn có phiền thêm một lời giải thích? Tò mò để xem làm thế nào nó hoạt động.
Kevin Cruijssen

Tôi sẽ nhưng tôi vẫn có cảm giác rằng một cách tiếp cận hoàn toàn khác sẽ làm tốt hơn. Sau khi tôi thành công hay thất bại, tôi sẽ giải thích mọi thứ còn lại.
đệ quy

1
@KevinCruijssen: Tôi có cảm giác rằng có một cách tiếp cận tốt hơn nhiều. Chắc chắn, tôi hoàn toàn viết lại nó, và lưu thêm 12 byte phình to. Tôi đã thêm một số lời giải thích là tốt.
đệ quy


13

Python 2 , 202 190 187 185 183 182 181 byte

s="bottom of the sea\n"
a="There's a "
for w in'hole log bump frog wart hair fly flea smile'.split():s=w+" %sn the "%'io'['g'in s]+s;print(a+s)*2+a+"hole, t%shole\n"%a[1:]+a+s[-30:]

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

Các lựa chọn thay thế cũ cho 'io'['g'in s](13 byte):

  • 14: 'oi'[s[5]<'n']
  • 15: 'io'[len(s)>30], 'ioo'[len(s)%3], 'ooi'[len(s)%4], và'io'[w[1]=='o']

Đã lưu:

  • -1 byte, nhờ Jonathan Allan
  • -1 byte, nhờ có Rod
  • -1 byte, nhờ Erik Outgolfer

"hole, t%shole\n"%a[1:]tiết kiệm một byte
Jonathan Allan

Bạn có thể lưu một byte bằng cách thả zip
Rod


@Rod Cảm ơn, :-)
TFeld

'oi'[s[5]<'n']cũng sẽ là một lựa chọn cũ: Tính năng 'io'['g'in s]!
Erik the Outgolfer

13

C (gcc) , 261 246 236 byte

#define X" on the "
char*a="smile"X"flea"X"fly"X"hair"X"wart"X"frog"X"bump"X"log in the hole in the bottom of the sea\n";f(i){for(i=0;i<9;)printf("T%s%sT%1$s%2$sT%1$shole, t%1$shole\nT%1$s%3$s\n","here's a ",a+"_TH<0$\31\r"[i++],a+95);}

-15 byte, Nhờ Daniel Schepler
-10 byte, Nhờ trần nhà

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


2
Bạn có thể viết ,*b="_TH<0$\31\r"thay thế?
Daniel Schepler

Nó sẽ lưu bất kỳ byte nào để định nghĩa "trong"?
OldBunny2800

@ OldBunny2800 không, nó sẽ dài hơn ! trong trường hợp này, bạn cần ít nhất 6 lần xuất hiện để có hiệu quả ...
Giacomo Garabello

12

05AB1E , 103 100 99 97 96 93 92 byte

Đã lưu một byte nhờ Kevin Cruijssen

“¥ÊˆŽ bumpÑå‡îtíÁ¤†îÌea¹²“#v’T€Î's a ’s„oiN2‹èy“ÿ ÿn€€ ÿ“©“—耂€€í™“JDN_iDU}X14£Dl‚„, ýXõ»,®

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

Giải trình

“¥ÊˆŽ bumpÑå‡îtíÁ¤†îÌea¹²“#vbắt đầu một vòng lặp trong danh sách ["hole", "log", "bump", "frog", "wart", "hair", "fly", "flea", "smile"]. Các từ được nén bằng từ điển 05AB1E.

Trên mỗi chúng tôi làm:

’T€Î's a ’    # push the string "There's a "
s             # move the string from the previous iteration to the top of the stack
              # will be an empty string the first iteration since there is no input
„oiN2‹è       # push "i" for the first 2 iterations and "o" otherwise
y             # push the current word
“ÿ ÿn€€ ÿ“    # use interpolacing to create the meat of the current iteration string
              # meaning "hole in the ", "log in the hole in the " and so on
©             # store a copy in the register for the next iteration
“—耂€€í™“    # push the string "bottom of the sea"
JD            # join the whole line together and duplicate it
N_iDU}        # if this is the first iteration, store a copy of the line in X
X14£          # push the first 14 chars of X, which is "There's a hole"
Dl            # make a lower-case copy
‚„, ý         # join the original with the lowercase copy on ", ", forming line 3
X             # push X which is line 4
õ             # push and empty string, to create the line break between sections
»,            # join the whole section on newlines and print
®             # push the register for the next iteration

2
Bạn có thể loại bỏ hàng đầu õ, bởi vì rõ ràng nó xuất ra một chuỗi trống theo mặc định khi swap được sử dụng mà không có gì trên ngăn xếp . Tôi không thể tìm thấy bất cứ điều gì khác để chơi golf; câu trả lời rất hay!
Kevin Cruijssen

1
@KevinCruijssen: Ồ vâng, tôi đã không xem xét điều đó như thường có đầu vào. Cảm ơn :)
Emigna

11

PowerShell , 194 188 185 180 174 byte

$z=$a="in the bottom of the sea"
$b="here's a"
$h="$b hole"
echo hole log bump frog wart hair fly flea smile|%{,"T$b $_ $a"*2
$a='oi'[!$j++]+"n the $_ $a"
"T$h, t$h
T$h $z
"}

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

Dường như không thể bắt Python ...

Về cơ bản, thiết lập một vài dây thường $h, $a, $z, và $b, sau đó đi qua một vòng lặp qua mỗi mục ( hole, log, ... flea, smile), mỗi lần lặp outputting câu thích hợp. Có một chút logic với !$j++ở giữa để giải thích cho in/ onchuyển đổi xảy ra. Mặt khác, tất cả các chuỗi chỉ còn lại trên đường ống và mặc định Write-Outputcung cấp cho chúng tôi các dòng mới miễn phí.

-6 byte nhờ Arnauld.
-3 byte nhờ mazzy.
-5 byte nhờ Veskah.
-6 byte nhờ mazzy.



@mazzy Đó là một mẹo thông minh. Tôi sẽ cần phải ghi nhớ điều đó, vì tôi sử dụng -splitkhá nhiều để có được từ.
admBorkBork




9

JavaScript (ES6),  201 194 189 188  187 byte

Đã lưu 1 byte nhờ @Shaggy

_=>`14log4bump5frog5wart5hair5fly5flea5smile5`.replace(/.+?\d/g,w=>`T0${(p=w+3+p)+p}1, t01
T01432
`.replace(/\d/g,n=>`here's a |hole|bottom of the sea
|n the | i| o`.split`|`[n]),p=`2T0`)

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


JavaScript (ES6), 235 byte

Đơn giản chỉ cần RegPack'ed .

_=>[..."Z[]^_$cdjkqvxz{}~"].reduce((p,c)=>(l=p.split(c)).join(l.pop()),`Tj{{}qq}$$}~~}dd}__}xx}cc}[[v~ frogz$}v
Z{kZz on^x flyz_v], tj]Zkq log in^{k] in^ bottom of^ seajhere's ad wartz~c fleazx$ bumpzq_ hairzd^ the] hole[ smilezcZ
Tj`)

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


8

Bash, 168 160 byte

r="There's a bottom of the sea
";for i in {hole,log}\ in {bump,frog,wart,hair,fly,flea,smile}\ on;{
r=${r/a/a $i the};t=${r:0:14};echo "$r$r${u=$t, ${t,}
$r}";}

160 byte

168 byte

Dịch từ câu trả lời khác của tôi trong Perl.


7

Japt -Rx, 126 116 113 112 111 109 107 byte

Nó chỉ ra rằng chơi golf một thử thách nén chuỗi trong khi trên điện thoại của bạn xuống boozer là vô cùng khó khăn - ai đã thunk?!

`T's»dâ ÈÞ­omºfdÈ a`rdS
tE8
¯E
`logn¿mpnfgnØnirnf§nf¤Úè`qÍË2ÆiAV¯E©8 iF¯E ÔqVri'oÃpW+v iSi,)UPÃc

Kiểm tra nó

                                              :The first 3 lines get assigned to variables U, V & W, respectively
`...`                                         :The compressed string "There'sdadholedindthedbottomdofdthedsea"
     rdS                                      :Replace all "d"s with spaces
tE8                                           :Substring of U from 0-based index 14 (E), of length 8 (="  in the ")
¯E                                            :Slice U to index 14 (="There's a hole")
`...`                                         :The compressed string "lognbumpnfrognwartnhairnflynfleasmilent"
     qÍ                                       :Split on "n" (note that the last element is irrelevant)
       Ë                                      :Map each element at 0-based index E in array F
        2Æ                                    :  Map the range [0,2)
          iA                                  :    Insert the following in U at index 10
            V¯                                :      V sliced to index
              E©8                             :        Logical AND of E and 8 (=0 on first iteration, 8 on all others)
                  i                           :      Prepend
                   F¯E                        :        Slice F to index E
                       Ô                      :        Reverse
                        q                     :        Join with
                         Vri'o                :          Replace "i" with "o" in V
                              Ã               :  End map
                               p              :  Push
                                W+            :    W appended with
                                  v           :      W lowercased
                                    iSi,      :      Prepended with a space prepended with a comma
                                        )     :    End append
                                         UP   :    U and an empty string
                                           Ã  :End map
                                            c :Flatten
                                              :Implicitly join with newlines, trim & output

7

XML, 719 673 603 514 493 486 byte

<!DOCTYPE a[<!ENTITY T "There's a"><!ENTITY O " on the"><!ENTITY a " hole in the bottom of the sea
"><!ENTITY b " log in the&a;"><!ENTITY c " bump&O;&b;"><!ENTITY d " frog&O;&c;"><!ENTITY e " wart&O;&d;"><!ENTITY f " hair&O;&e;"><!ENTITY g " fly&O;&f;"><!ENTITY i " flea&O;&g;"><!ENTITY z "&T; hole, there's a hole
&T;&a;
">]><a>&T;&a;&T;&a;&z;&T;&b;&T;&b;&z;&T;&c;&T;&c;&z;&T;&d;&T;&d;&z;&T;&e;&T;&e;&z;&T;&f;&T;&f;&z;&T;&g;&T;&g;&z;&T;&i;&T;&i;&z;&T; smile&O;&i;&T; smile&O;&i;&z;</a>

Bạn có thể "thực thi" nó với xmlstarlet sel -t -m '//a' -v . -n <xml_file_here>.

Điều này sẽ dễ dàng hơn rất nhiều nếu XML không quá dài dòng, nhưng về mặt sáng sủa, nó nhỏ hơn 25% kích thước của văn bản gốc.


5

Võng mạc 0.8.2 , 150 byte


THsmile oNflea oNfly oNhair oNwart oNfrog oNbump oNlog iNE
N
$&$'¶TH
O^$`

.+
$&¶$&¶THW, tHW¶THE¶
H
here's a 
E
W iNbottom of the sea
W
hole
N
n the 

Hãy thử trực tuyến! Giải trình:


THsmile oNflea oNfly oNhair oNwart oNfrog oNbump oNlog iNE

Chèn câu thơ cuối.

N
$&$'¶TH

Tính tất cả các câu thơ.

O^$`

Đặt các câu thơ theo đúng thứ tự.

.+
$&¶$&¶THW, tHW¶THE¶

Hoàn thành mỗi câu và thêm điệp khúc.

H
here's a 
E
W iNbottom of the sea
W
hole
N
n the 

Mở rộng một số chỗ dành sẵn.


5

R , 237 231 byte

i=" in the "
for(j in 0:8)cat(f<-c(t<-"There's a ",paste(c("log","bump","frog","wart","hair","fly","flea","smile")[j:0],collapse=" on the "),if(j)i,h<-"hole",i,b<-"bottom of the sea
"),f,t,h,", there's a ",h,"
",t,h,i,b,"
",sep="")

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


5

PHP, 180 178 byte

foreach([hole,log,bump,frog,wart,hair,fly,flea,smile]as$w)echo$a=T.($b="here's a ").($s="$w ".io[++$i>2]."n the $s").$c="bottom of the sea
",$a,T,$b.=hole,", t$b
T$b in the $c
";

Chạy với -nrhoặc thử trực tuyến .

Đưa ra các cảnh báo trong PHP 7.2; để sửa chữa, đặt dấu ngoặc kép quanh
các phần tử mảng, io, holevà cả hai độc lập T.


4

C (gcc) , 334 328 307 299 byte

char*s="here's a \0smile on the flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea\n";i;k=105;a[]={0,1,1,1,1,0,1,2,2};main(j){for(;i<9;k-=11+a[i++])do{printf("T%s%s",s,s+k);}while(j++&1||!printf("T%shole, t%shole\nT%s%s\n",s,s,s,s+105));}

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




4

Japt -R , 142 byte

`—¤clogc¿mpcfžgcØÖŽrcf§cf¤acsÚè`qc
`ˆ e Þ­om  e  a`
`T”œ's a `
£W+U¯YÄ ÔËE?"io"gE<Y +`n e `:P +Dø+` {V}
` ²+W+`—¤, t”œ's a —¤
{W}—¤ {V+R

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


4

Mẻ, 267 byte

@echo off
set r=i
set t= There's a hole
set s=bottom of the sea
for %%w in (hole log bump frog wart hair fly flea smile)do call:c %%w
exit/b
:c
set s=%1 %r%n the %s%
echo%t:~,11%%s%
echo%t:~,11%%s%
echo%t%,%t:T=t%
echo%t%%s:~-25%
echo(
if %1==log set r=o

tchứa một chuỗi lặp đi lặp lại trong điệp khúc, schứa hầu hết các dòng thơ, trong khi rchọn giữa in theon the. Trong các câu thơ, chỉ cần 11 ký tự đầu tiên t, trong khi ở đoạn điệp khúc đầu tiên, bản sao thứ hai tcó phần dưới Tvà dòng điệp khúc thứ hai sử dụng lại 25 ký tự cuối cùng s.



4

Haskell , 243 215 byte

Giảm xuống còn 215 byte với sự trợ giúp tuyệt vời từ nimi

c[[l n,l n,'T'#h++", "++'t'#h,l 8,""]|n<-[8,7..0]]
t#u=t:"here's a "++u
h="hole"
c=concat
l n='T'#c(drop n$map(++" on the ")(words"smile flea fly hair wart frog bump")++["log in the ",h," in the bottom of the sea"])

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

(Phiên bản 243 byte cũ ở đây ).

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

-- main function producing a list of lines
v = concat [[
    l n,
    l n, -- second line of each verse equals to its first line
    'T' # h ++ ", " ++ 't' # h,
    l 8, -- last line of each verse is the same in all verses
    ""
  ] | n <- [8,7..0]]

-- a small helper to construct similar strings 
t # u = t : "here's a " ++ u

h = "hole"

-- construct a first line of n-th verse (with n = 8 is the first and n = 0 is the last one)
-- Every such line begins with a constant prefix followed by expanding list of nested entities
l n = 'T' # concat (
      drop n $
         map (++ " on the ") (words "smile flea fly hair wart frog bump")
         ++ ["log in the ", h, " in the bottom of the sea"]
    )

1
Một số mẹo: a) bạn schỉ sử dụng một lần, vì vậy bạn có thể nội tuyến nó. b) bạn luôn luôn thêm và thêm một cái gì đó vào t, vì vậy bạn có thể biến nó thành một hàm (infix) : t#u=t:"here's a "++u. c) xây dựng danh sách lớn trong chức năng lvới map(++" on the ")(words"smile flea ..."ngắn hơn. Ngoài ra: di chuyển mọi thứ được nối vào danh sách đó vào danh sách đó. d) danh sách các số sẽ giảm bây giờ chạy từ 8xuống 0(số một chữ số!) e) bây giờ nội tuyến icũng lưu một số byte. f) không cần đặt tên cho chức năng chính của bạn. Theo meta của chúng tôi, các giá trị Haskell được coi là các hàm thích hợp, vì vậy hãy bỏ qua v=.
nimi

... Tất cả trong tất cả 215 byte Hãy thử trực tuyến!
nimi

1
Thêm 3 byte để lưu: thay vì hiểu danh sách, bạn có thể sử dụng >>=(concatMap) từ danh sách đơn nguyên và nội tuyến concattrong hàm l. Hãy thử trực tuyến!
nimi


3

Python 3 , 213 206 198 193 byte

k='n the ';o=e='bottom of the sea\n';b="There's a ";h='hole'
for j in[h]+'log bump frog wart hair fly smile'.split():o=j+' '+'io'['g'in o]+k+o;print(b+o+b+o+b+h+', t'+b[1:]+h+'\n'+b+h+' i'+k+e)

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


-15 byte nhờ @Sara
-5 byte chỉ nhờ @ ASCII

Có lẽ là một chút golf, nhưng không nhiều.



@SaraJ Cảm ơn. Tôi đã có ấn tượng (rõ ràng nhầm lẫn) o=e=sẽ làm cho cả hai oeđề cập đến cùng một đối tượng. Tôi cũng nghĩ chia tay sẽ lâu hơn.
Artemis Fowl

@ArtemisFowl oe làm tham khảo cùng một đối tượng ... nó chỉ là chuỗi là không thay đổi trong Python để những thứ như +=sẽ tạo ra một bản sao mới thay vì đột biến hiện tại một
ASCII chỉ


@ ASCII - chỉ tôi biết, nhưng tôi nghĩ rằng con trăn bằng cách nào đó đã chắc chắn rằng chúng tiếp tục đề cập đến cùng một đối tượng.
Artemis Fowl

2

Sạch sẽ , 267 byte

import StdEnv,Text,Data.List
t="here's a "
h="hole"
b=" in the bottom of the sea"
f=foldr((+)o\s#p="T"+t+join" on the "(reverse s)+" in the "+h+b
=join"\n"[p,p,"T"+t+h+", t"+t+h+"\nT"+t+h+b+"\n\n"])""(tl(inits["log","bump","frog","wart","hair","fly","flea","smile"]))

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


2

cQuents , 238 219 byte

|@
#36::"T"~c1)~j\rbk));@ )~c2,Z,"T"~c1)~"hole, t"~c1)~"hole","T"~c1)~c2)~@

::"","log in the","bump"~c3,"frog"~c3,"wart"~c3,"hair"~c3,"fly"~c3,"flea"~c3,"smile"~c3
:"here's a ","hole in the bottom of the sea"," on the"

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

Thử thách này khiến tôi cuối cùng cũng thực hiện được danh sách và chuỗi trong ngôn ngữ của mình. Ngôn ngữ này được xây dựng cho các chuỗi số nguyên, vì vậy nó đã làm khá tốt!

Giải trình

:"here's a ","hole in the bottom of the sea"," on the"

    helper line: c1), c2), and c3) access the three terms in this list

::"","log in the","bump"~c3,"frog"~c3,"wart"~c3,"hair"~c3,"fly"~c3,"flea"~c3,"smile"~c3

    helper line: yields a list containing the first n terms in it, accessed with bx)
    for example, the first three terms are:

"","log in the","bump"~c3

    so b3) would yield ["","log in the","bump on the"] (~ is concatenation and c3 is " on the")


|@
#36::"T"~c1)~j\rbk));@ )~c2,Z,"T"~c1)~"hole, t"~c1)~"hole","T"~c1)~c2)~@


|@
                              join sequence on literal newline
#36::                         output first 36 terms in sequence joined together
                              following are the 4 terms in the sequence, which will cycle through 9 times (for a total of 36 terms)
"T"~c1)~j\rbk));@ )~c2,       first term
"T"~c1)~                      "T" concat "here's a " concat
        j\rbk));@ )           the first k terms of b, reversed, and joined on " "
                   ~c2,       concat "hole in the bottom of the sea"
Z,                            second term - same as previous
"T"~c1)~"hole, t"~c1)~"hole", third term
"T"~c1)~                      "T" concat "here's a " concat
        "hole, t"~c1)~"hole", "hole, t" concat "here's a " concat "hole"
"T"~c1)~c2)~@
                              fourth term - "T" concat "here's a " concat "hole on the bottom of the sea" concat newline

2

Perl 5 , 194 byte

@ ASCII - chỉ xóa 6 byte với dòng mới và một \lmẹo mà tôi đã quên

$"=" on the ";say+($b=($e="There's a ").hole,$c=" in the bottom of the sea",$/)x2,$.="$b, \l$b
$b$c
";say"$e@a[-$_..-1] in the hole$c
"x2,$.for 1..(@a=qw/smile flea fly hair wart frog bump log/)

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



Vâng Công việc tốt đẹp. Tôi nên nhớ những dòng mới nhất định. Tôi đã thấy \ltrước đây, nhưng chưa bao giờ có lý do để sử dụng nó, vì vậy không bao giờ nghĩ về nó.
Xcali




2

Than , 115 106 byte

≔There's a holeθEE⁹⁺…θχ⪫⮌…⪪”↶±∧⟲!↶⁼,(_⎇RB↧ω⪪zθⅉQθ`✳&⬤⸿◧σ⁻y▷»ΣK▶↙⁻υX`SξQ6 /ι⁹Wq”x⁺²ιn the ⟦ιι⁺⁺θ, ↧θ⁺θ✂ι±²⁵

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Chỉnh sửa: Đã lưu 9 byte bằng cách sao chép mã Batch của tôi cho dòng cuối cùng của điệp khúc. Giải trình:

≔There's a holeθ

Lưu chuỗi There's a hole, được sử dụng hai lần nguyên trạng, lần thứ ba bằng chữ thường và cũng là lần thứ tư nhưng chỉ 10 ký tự đầu tiên.

⪪”↶±∧⟲!↶⁼,(_⎇RB↧ω⪪zθⅉQθ`✳&⬤⸿◧σ⁻y▷»ΣK▶↙⁻υX`SξQ6 /ι⁹Wq”x

Tách chuỗi bottom of the seaxhole ixlog ixbump oxfrog oxwart oxhair oxfly oxflea oxsmile otrên xs.

E⁹⁺…θχ⪫⮌…...⁺²ιn the 

Lặp lại 9 câu, lấy các i+2phần tử đầu tiên của mảng, đảo ngược chúng, nối chúng với n thevà thêm tiền tố There's avào kết quả.

E...⟦ιι⁺⁺θ, ↧θ⁺θ✂ι±²⁵

Mở rộng mỗi dòng thành một câu thơ bằng cách nhân đôi dòng và xây dựng điệp khúc. Mỗi dòng của câu thơ sau đó được in ngầm trên mỗi dòng riêng và mỗi câu được ngầm cách nhau bởi một dòng trống.


2

V , 184 170 byte

4iThere's a hole in the bottom of the sea
kky5w5eá,lpD5brtHj4yyGp4w8ion the 2briilog 3bibump 3bifrog 3biwart 3bihair 3bifly 3biflea 3bismile 7ñ4yykp4wd3wñ8ñÄ5jñ

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

Giải trình:

  • 4iThere's a hole in the bottom of the sea<\n><esc> Chèn "Có một lỗ dưới đáy biển" 4 lần.
  • kk Di chuyển đến dòng thứ ba
  • y5w bản sao "Có một lỗ"
  • 5eá, chèn dấu phẩy sau "Có lỗ"
  • lp dán sau dấu phẩy
  • D xóa phần còn lại của dòng
  • 5brt chữ thường chữ T thứ hai
  • Hj4yy sao chép 4 dòng từ dòng thứ hai
  • Gp Dán mọi thứ sau dòng đầu tiên
  • 4w8ion the <esc>(ở cuối câu thơ thứ nhất) di chuyển đến "lỗ" đầu tiên trong câu thơ thứ hai và chèn "vào" 8 lần
  • 2briilog <esc> di chuyển ngược về "bật" cuối cùng, thay thế o bằng i và sau đó chèn "log"
  • 3bibump <esc>3bifrog <esc>3biwart <esc>3bihair <esc>3bifly <esc>3biflea <esc>3bismile <esc> Di chuyển ngược qua dòng, chèn các từ thích hợp giữa mỗi "trên"
  • 7ñ4yykp4wd3wñthực hiện 4yykp4wd3w7 lần
    • 4yykp nhân đôi câu trước cái này
    • 4wd3w chuyển đến từ đầu tiên sau "Có một lỗ" và xóa 3 từ
  • 8ñÄ5jñ nhân đôi dòng đầu tiên của mỗi câu sau dòng đầu tiên (có 8 trong số này để làm)

2

/// , 216 byte

/V/\/\///U/\/ VS/TCVR/iBVQUtheVPUoBVOUholeVN/RASVM/ASO, tCO
SA
VL/RMSVKUlog VJUbumpPKVIUfrogPJVHUwartPIVGUhairPHVFUflyPGVEUfleaPFVDUsmilePEVC/here's aVB/nQVA/O R bottom ofQ sea
/SASMSKNKLJNJLINILHNHLGNGLFNFLENELDNDRM

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

Loại nhiệm vụ này là thứ duy nhất và /// khá hợp lý. : D Này, kết quả ngắn hơn C, C # hoặc Java!

Đầu ra từ chương trình này kết thúc bằng hai lần ngắt dòng; hy vọng đó không phải là một thỏa thuận.

Dù sao, không có sự thông minh thực sự ở đây. Tôi chỉ đơn giản xác định các chuỗi lặp lại và xác định các phím tắt một ký tự cho chúng và lặp lại cho đến khi tôi không thấy bất kỳ chuỗi lặp lại nào nữa. Tôi đã làm điều này trong một thời gian ít nhiều ngây thơ và tham lam. Tuy nhiên, tôi đã cố tình định nghĩa một lối tắt cho "nụ cười trên con bọ chét trên ... biển", sau đó là "con bọ chét bay trên ... biển", v.v., để tạo thành một chuỗi các phím tắt . Kết quả là toàn bộ chuỗi các danh từ mới được hiển thị rõ ràng trong mã, và tôi thấy điều đó khá dễ chịu. :)

Sau khi V và U được thay thế, chúng ta có mã dễ đọc hơn sau đây:

/S/TC//R/iB//Q/ the//P/ oB//O/ hole//N/RAS//M/ASO, tCO
SA
//L/RMS//K/ log //J/ bumpPK//I/ frogPJ//H/ wartPI//G/ hairPH//F/ flyPG//E/ fleaPF//D/ smilePE//C/here's a//B/nQ//A/O R bottom ofQ sea
/SASMSKNKLJNJLINILHNHLGNGLFNFLENELDNDRM

2

LaTeX, 265 268 ký tự

\documentclass{book}\input{pgffor}\def\i{bottom of the sea}\let~\i\def\b{here's a }\def\h{hole}\def\s#1{ in}\begin{document}\foreach\x in{\h\s,log\s,bump,frog,wart,hair,fly,flea,smile}{\xdef~{\x{ on} the ~}T\b~\\T\b~\\T\b\h, t\b\h\\T\b\h\,in the \i\par}\enddocument

biên dịch thành một tệp PDF đẹp, với các đoạn thụt đầu dòng và mọi thứ.

Ungolfed và bình luận:

\documentclass{book}
\input{pgffor}
\def\i{bottom of the sea}   %for re-use in the last two verses 
\let~\i                     %here I keep attaching words
\def\b{here's a }               
\def\h{hole}
\def\s#1{ in}               %this replaces the next token with "in", useful for log and hole where "in" is used instead of"on"
\begin{document}
\foreach\x in{\h\s,log\s,bump,frog,wart,hair,fly,flea,smile}{
    \xdef~{\x{ on} the ~}   %keep attaching words and on/on to ~
    T\b~\\                  %verse 1
    T\b~\\                  %verse 2
    T\b\h, t\b\h\\          %verse 3
    T\b\h\,in the \i\par    %verse 4
}
\enddocument

Sản lượng:

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


2

C # (Trình biên dịch tương tác Visual C #) , 220 byte

string b="There's a ",d="hole in the bottom of the sea\n",e,f;" log bump frog wart hair fly flea smile".Split().Any(s=>Write((e=b+(f=s!=""?s+(f!=""?" o":" i")+"n the "+f:s)+d)+e+b+$@"hole, there's a hole
{b+d}
")is int);

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

-5 byte nhờ @ASCIIOnly và -2 byte nhờ @someone!

Tôi có một đứa con nhỏ và có thể đảm bảo với bạn bài hát này là những phần bằng nhau lôi cuốn và khó chịu.


1
Tôi xin lỗi vì đã nhắc nhở bạn rằng nó tồn tại: o)
Sok

.Any()-> !=""?
ASCII - chỉ


và bạn không cần khoảng trống sau introng foreach> _>
ASCII - chỉ

@ASCIIOnly - Cảm ơn lời khuyên :)
dana
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.