바다의 바닥에 구멍이 있습니다


48

유아용 아들이 저녁을 먹도록 설득하려고 노력했지만 실패했습니다. 이 노래의 중간 쯤에 나는 공식적인 구조가 코드 골프에 잘 어울린다는 것을 깨달았다!

이 작업은 입력을받지 않고 다음 텍스트를 생성하는 프로그램 또는 함수를 작성하는 것입니다.

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

도전 규칙 :

  • 텍스트는 함수 출력으로 인쇄되거나 반환 될 수 있습니다
  • 각 구절은 하나의 빈 줄로 구분됩니다
  • 후행 공백은 레이아웃을 변경하지 않는 한 괜찮습니다 (따라서 단어 사이에 공백이나 여분의 공백이 없음)
  • 후행 줄 바꿈도 괜찮습니다.
  • 선행 줄 바꿈이 없습니다.
  • 모든 언어를 환영하며 이것은 이므로 각 언어에 대한 가장 짧은 바이트 단위 답변이 이깁니다!

6
유사에 할머니가 있었다 (다른 유사한 문제는 이것은 예를 들어, 나는 그들이 반드시해야한다고 생각하지는 않지만, 중복으로 폐쇄되어있다.)
조나단 앨런

6
Ho, ro, rattlin 'bog, 계곡의 늪지.
fəˈnɛtɪk

4
비교를 위해 (비록이 아닌 프로그래밍 언어)는 gzip -5186 바이트로 압축 (와 bzip2xz더 할 것 같다).
다니엘 Schepler

2
다른 개발자의 부모님으로부터 축하드립니다 :)
AJFaraday

1
이 노래를 05AB1E에 적용하고 싶습니다. "오오오-오-오-일-비-오-이-이에 구멍이 있습니다!"
매직 문어 Urn

답변:


23

SOGL , 103 94 93 바이트

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

여기 사용해보십시오!

...‘                 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
그러나 ...하지만 어떻게?
SomeShinyObject

8
놀랄 만한.
Austin Burk

1
HNQ가 다시 파업! : \
얽히고 설킨

4
설명을 추가 하시겠습니까? 그것이 어떻게 작동하는지 궁금합니다.
Kevin Cruijssen

@KevinCruijssen 님이 추가 함
dzaima

19

Stax , 90 87 75 바이트

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

실행 및 디버깅

포장을 풀고 포장을 풀고 다음과 같이 주석 처리했습니다.

`;$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

이것을 실행


2
설명을 추가 하시겠습니까? 그것이 어떻게 작동하는지 궁금합니다.
Kevin Cruijssen

그러나 나는 여전히 완전히 다른 접근법이 더 나아질 것이라는 느낌을 가지고 있습니다. 내가 성공하거나 실패한 후에 남은 것은 무엇이든 설명하겠습니다.
재귀

1
@ KevinCruijssen : 훨씬 더 나은 접근 방식이 있다는 느낌이 들었습니다. 확실히, 나는 그것을 완전히 다시 쓰고 12 바이트의 추가 팽창을 저장했습니다. 나는 또한 약간의 설명을 추가했다.
재귀


13

파이썬 (2) , 202 (190) 187 185 183 182 181 바이트

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:]

온라인으로 사용해보십시오!

'io'['g'in s](13 바이트)의 오래된 대안 :

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

저장 됨 :

  • Jonathan Allan 덕분에 -1 바이트
  • Rod 덕분에 -1 바이트
  • Outgolfer Erik 덕분에 -1 바이트

"hole, t%shole\n"%a[1:]바이트 절약
Jonathan Allan

지퍼를 떨어 뜨림으로써 바이트절약 할 수 있습니다
Rod


@Rod Thanks, :-)
TFeld

'oi'[s[5]<'n']오래된 대안이 될 것입니다 : 특징 'io'['g'in s]!
Outgolfer Erik

13

C (GCC) , 261 (246) 236 바이트

#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 바이트, Daniel Schepler 덕분에
-10 바이트, ceilingcat 덕분에

온라인으로 사용해보십시오!


2
,*b="_TH<0$\31\r"대신 쓸 수 있습니까?
다니엘 Schepler

"에서"를 정의하기 위해 바이트를 저장 하시겠습니까?
OldBunny2800

@ OldBunny2800 아니오, 더 길 것입니다 ! 이 경우에 효과를 발휘하려면 최소한 6
번의

12

05AB1E , 103 (100) 99 97 96 93 92 바이트

Kevin Cruijssen 덕분에 바이트 절약

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

온라인으로 사용해보십시오!

설명

“¥ÊˆŽ bumpÑå‡îtíÁ¤†îÌea¹²“#v목록에서 루프를 시작합니다 ["hole", "log", "bump", "frog", "wart", "hair", "fly", "flea", "smile"]. 단어는 05AB1E 사전을 사용하여 압축됩니다.

우리는 각각 :

’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
스택에 아무것도 사용하지 않고 wap을 사용 하는 경우 기본적으로 빈 문자열을 출력õ 하므로 Leading을 제거 할 수 있습니다 . 나는 골프에 다른 것을 찾을 수 없었다. 아주 좋은 답변입니다! s
Kevin Cruijssen

1
@ KevinCruijssen : 아, 네, 보통 입력이 있기 때문에 그것을 고려하지 않았습니다. 감사합니다 :)
Emigna

11

PowerShell을 , 194 188 185 180 174 바이트

$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, $a, $z$b각 항목을 통해 루프를 통해 다음 진행을 ( hole, log, ... flea, smile), 해당 구절을 출력하는 각 반복. 발생 !$j++하는 in/ on스위치 를 설명하기 위해 중간에 약간의 논리 가 있습니다. 그렇지 않으면 모든 문자열이 파이프 라인에 그대로 남아 있으며 기본값 Write-Output은 줄 바꿈을 무료로 제공합니다.

Arnauld 덕분에 -6 바이트
mazzy 덕분에 -3 바이트.
Veskah 덕분에 -5 바이트.
mazzy 덕분에 -6 바이트



@mazzy 영리한 속임수입니다. 나는 -split단어를 얻기 위해 약간을 사용하기 때문에 그것을 명심해야합니다 .
AdmBorkBork




9

자바 스크립트 (ES6)  201 194 189 188  187 바이트

@Shaggy 덕분에 1 바이트 절약

_=>`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`)

온라인으로 사용해보십시오!


자바 스크립트 (ES6), 235 바이트

간단히 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`)

온라인으로 사용해보십시오!


8

배쉬, 168160 바이트

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 바이트

168 바이트

Perl의 다른 답변에서 번역되었습니다.


7

JAPT -Rx, 126 116 113 112 111 109 107 바이트

휴대 전화를 사용하는 동안 부저를 끈으로 묶는 것은 매우 어려운 일입니다. 누가 썽크었을까요?!

`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

그것을 테스트

                                              :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 바이트

<!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>

로 "실행"할 수 있습니다 xmlstarlet sel -t -m '//a' -v . -n <xml_file_here>.

XML이 너무 장황하지 않으면 훨씬 쉬울 것입니다. 그러나 밝은면에서는 원본 텍스트의 크기가 25 % 미만입니다.


5

레티 나 0.8.2 , 150 바이트


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 

온라인으로 사용해보십시오! 설명:


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 

자리 표시자를 확장합니다.


5

R , 237231 바이트

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="")

온라인으로 사용해보십시오!


5

PHP, 180 178 바이트

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

온라인으로 실행 -nr하거나 사용해보십시오 .

PHP 7.2의 경고를 나타냅니다. 해결하려면 따옴표 넣어
배열 요소 io, hole두 독립 T.





4

배치, 267 바이트

@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

t코러스에서 반복되는 문자열을 s포함하고 대부분의 구절을 포함 r하며 in the와 사이에서 선택합니다 on the. 구절에서의 첫 11 개 문자는 t첫 번째 코러스 라인의 두 번째 사본이 있지만, 필요 t는있다 T소문자와 두 번째 코러스 라인의 마지막 25 개 문자를 다시 사용합니다 s.



4

하스켈 , 243215 바이트

nimi의 큰 도움으로 215 바이트로 줄었습니다.

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"])

온라인으로 사용해보십시오!

(오래된 243 바이트 버전은 여기에 있습니다 ).

매우 간단한 솔루션입니다.

-- 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
몇 가지 팁 : a) s한 번만 사용 하므로 인라인 할 수 있습니다. b) 항상 앞에 추가하고 무언가를 추가 t하여 (중첩) 함수로 만들 수 있습니다 t#u=t:"here's a "++u. c) 기능 l으로 큰 목록을 구성하는 map(++" on the ")(words"smile flea ..."것이 더 짧습니다. 또한 : 해당 목록에 추가 된 모든 것을 목록 자체로 옮깁니다. d) 이제 삭제할 숫자 목록이 8아래에서 0(한 자리 숫자!) 까지 실행됩니다 . e) 이제 인라인하여 i일부 바이트를 절약합니다. f) 주요 기능의 이름을 지정할 필요가 없습니다. 메타에 따르면 Haskell 값은 적절한 함수로 간주되므로을 삭제하십시오 v=.
nimi

... 215 바이트 전체에서 온라인으로 사용해보십시오!
nimi

1
저장할 다른 3 바이트 : 목록 이해 대신 >>=list monad 및 inline concat함수 에서 (concatMap)을 사용할 수 있습니다 l. 온라인으로 사용해보십시오!
nimi

3

자바 스크립트 (Babel Node) , 239 바이트

@Oliver에서 -7 바이트 *.*

(x=0,r='hole0log0bump0frog0wart0hair0fly0flea0smile'.split`0`).map(a=>(t=(i="There's a ")+a+r.slice(0,x++).reverse().map((h,_)=>` ${"io"[_<x-2|0]}n the ${h}`).join``+(o=` in the bottom of the sea
`))+t+(`${k=i+"hole"}, ${k}
`)+k+o).join`
`

온라인으로 사용해보십시오!


1
T각 구절의 세 번째 줄에있는 초 는 소문자 여야합니다.
얽히고 설킨

3

파이썬 (3) , 213 (206) 198 (193) 바이트

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)

온라인으로 사용해보십시오!


@Sara 덕분에 -15 바이트 @ASCII
전용 덕분에 -5 바이트

아마 좀 더 골프 타지 만 많이는 아닙니다.



감사합니다. 나는 (분명히 잘못된) 인상이었다 o=e=모두를 만들 것 oe같은 객체를 참조하십시오. 또한 분할이 더 길어질 것이라고 생각했습니다.
Artemis Fowl

@ArtemisFowl o와는 e 않습니다 같은 일이 그래서 문자열을 파이썬에서 불변 단지의 ... 같은 객체를 참조 +=새 복사본을 만드는 대신 기존의 돌연변이 것
ASCII 전용


@ASCII 전용 나는 알고 있지만 파이썬이 어떻게 든 동일한 객체를 계속 참조 한다고 생각했습니다 .
Artemis Fowl

2

클린 , 267 바이트

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"]))

온라인으로 사용해보십시오!


2

cQuents , 238 219 바이트

|@
#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"

온라인으로 사용해보십시오!

이 도전으로 인해 마침내 언어로 목록과 문자열을 구현했습니다. 이 언어는 정수 시퀀스를 위해 만들어 졌으므로 꽤 잘되었습니다!

설명

:"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

펄 5 , 194 바이트

@ASCII 전용은 리터럴 개행과 \l내가 잊어 버린 트릭으로 6 바이트를 깎았 습니다.

$"=" 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/)

온라인으로 사용해보십시오!



예. 잘 했어. 나는 개행을 확실히 기억해야했다. 나는 \l이전을 보았지만 그것을 사용할 이유가 없었으므로 결코 생각하지 않았다.
Xcali




2

, 115106 바이트

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

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 편집 : 코러스의 마지막 줄에 대한 배치 코드를 복사하여 9 바이트를 절약했습니다. 설명:

≔There's a holeθ

string을 There's a hole두 번 그대로 사용하고 소문자는 세 번, 또한 네 번은 처음 10 자만 사용하십시오.

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

문자열 bottom of the seaxhole ixlog ixbump oxfrog oxwart oxhair oxfly oxflea oxsmile oxs로 나눕니다.

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

9 개의 구절을 반복 i+2하여 배열 의 첫 번째 요소를 가져 와서 뒤집고, 결합하고 결과에 n the접두사 There's a를 붙입니다 .

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

선을 복제하고 코러스를 구성하여 각 선을 구절로 확장하십시오. 그런 다음 구절의 각 줄은 각 줄에 암시 적으로 인쇄되고 각 구절은 빈 줄로 암시 적으로 분리됩니다.


2

V , 184 170 바이트

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ñ

온라인으로 사용해보십시오!

설명:

  • 4iThere's a hole in the bottom of the sea<\n><esc> "바다 바닥에 구멍이 있습니다"를 4 번 삽입하십시오.
  • kk 세 번째 줄로 이동
  • y5w "구멍이있다"를 복사
  • 5eá, "구멍이 있습니다"뒤에 쉼표를 삽입하십시오
  • lp 쉼표 뒤에 붙여 넣기
  • D 나머지 줄을 삭제
  • 5brt 소문자 두 번째 T
  • Hj4yy 두 번째 줄에서 4 줄 복사
  • Gp 첫 줄 뒤에 모든 것을 붙여 넣기
  • 4w8ion the <esc>(첫 번째 구절의 끝에서) 두 번째 구절의 첫 번째 "구멍"으로 이동하여 ""
  • 2briilog <esc> 마지막 "on"으로 뒤로 이동하고 o를 i로 바꾼 다음 "log"를 삽입하십시오.
  • 3bibump <esc>3bifrog <esc>3biwart <esc>3bihair <esc>3bifly <esc>3biflea <esc>3bismile <esc> 줄을 따라 뒤로 이동하여 각 "위"에 적절한 단어를 삽입하십시오.
  • 7ñ4yykp4wd3wñ4yykp4wd3w7 회 실행
    • 4yykp 이 구절을 복제하십시오
    • 4wd3w "구멍이 있습니다"다음 첫 단어로 이동하고 3 단어를 삭제
  • 8ñÄ5jñ 첫 번째 구절 뒤에 각 구절의 첫 번째 줄을 복제하십시오 (이들 중 8 개가 있습니다)

2

/// , 216 바이트

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

온라인으로 사용해보십시오!

이런 종류의 작업은 합리적으로 잘하는 유일한 유일한 것입니다. : D 야, 결과는 C, C # 또는 Java보다 짧다!

이 프로그램의 출력은 두 개의 후행 줄 바꿈으로 끝납니다 . 그것이 거래를 깨는 사람이 아니길 바랍니다.

어쨌든 여기에는 진정한 영리함이 없습니다. 반복되는 문자열을 식별하고 이에 대한 한 문자 바로 가기를 정의하고 더 이상 반복되는 문자열을 볼 수 없을 때까지 반복했습니다. 나는 다소 순진하고 탐욕스러운 방식으로 이것을했습니다. 그러나 나는 의도적으로 "바다의 벼룩에 미소"에 대한 지름길을 정의하고 그 뒤에 "바다에 벼룩에 벼룩"을 붙이는 등 일련의 지름길을 형성했습니다. . 결과적으로 새로운 명사의 전체 시퀀스가 ​​코드에서 명확하게 표시되며, 그 결과가 매우 즐겁습니다. :)

V와 U가 교체 된 후 다음과 같이 더 읽기 쉬운 코드가 있습니다.

/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

유액, 265 268

\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

단락 들여 쓰기와 모든 것을 포함하여 멋진 PDF로 컴파일합니다.

Ungolfed 및 댓글 :

\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

출력 :

여기에 이미지 설명을 입력하십시오


2

C # (Visual C # Interactive Compiler) , 220 바이트

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

온라인으로 사용해보십시오!

@ASCIIOnly 덕분에 -5 바이트, @someone 덕분에 -2 바이트!

나는 작은 아이를 가지고 있으며이 노래가 같은 부분에 익숙하고 성가신 것을 보장 할 수 있습니다.


1
유감입니다 : o)
Sok

.Any()-> !=""?
ASCII 전용


당신은 뒤에 공간이 필요하지 않습니다 in에서 foreach_>>
ASCII 전용

@ASCIIOnly-팁 주셔서 감사합니다 :)
dana
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.