На дні моря є дірка


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
Хо, ро, брязкальце, болото в долині.
fəˈnɛtɪk

4
Для порівняння (хоча це не мова програмування) gzip -5стискає його до 186 байт ( bzip2і, xzздається, робить гірше).
Даніель Шеплер


1
Я хочу адаптувати цю пісню до 05AB1E ... "Там є отвір у" о-п'ять-ай-бджола-один-е-е! "
Чарівний восьминога Урна

Відповіді:


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
Неймовірно. Як навіть--
Остін Берк

1
HNQ б'є знову! : \
Кудлатий

4
Ви б не хотіли додати пояснення? Цікаво подивитися, як це працює.
Кевін Круїссен

@KevinCruijssen додав
dzaima

19

Стакс , 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
Ви б не хотіли додати пояснення? Цікаво подивитися, як це працює.
Кевін Круїссен

Буду, але я все ще маю відчуття, що зовсім інший підхід стане кращим. Коли мені це вдасться чи не вдасться, я поясню все, що залишилося
рекурсивна

1
@KevinCruijssen: У мене було відчуття, що існує набагато кращий підхід. Звичайно, я повністю переписав це, і врятував ще 12 байтів розриву. Я також додав пояснення.
рекурсивна


13

Python 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']

Збережено:

  • -1 байт, завдяки Джонатану Аллану
  • -1 байт, завдяки Роду
  • -1 байт, завдяки Еріку Переможнику

"hole, t%shole\n"%a[1:]рятує байт
Джонатан Аллан

Ви можете зберегти байт , скинувши блискавку
Rod

@JonathanAllan Дякую :)
TFeld

@Rod Спасибі, :-)
TFeld

'oi'[s[5]<'n']також буде давньою альтернативою: Featuring 'io'['g'in s]!
Ерік Аутгольфер

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 байт, завдяки Даніелу Шеплеру
-10 байтів, завдяки слюсарі

Спробуйте в Інтернеті!


2
Чи можете ви написати ,*b="_TH<0$\31\r"замість цього?
Даніель Шеплер

Чи врятує це будь-який байт для визначення "в"?
OldBunny2800

@ OldBunny2800 ні, було б довше ! у цьому випадку вам потрібно принаймні 6 випадків, щоб бути ефективними ...
Джакомо Гарабелло

12

05AB1E , 103 100 99 97 96 93 92 байт

Збережено байт завдяки Кевіну Крейсейну

“¥ÊˆŽ 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
Ви можете видалити ведучий õ, тому що, мабуть, він видає порожню рядок за замовчуванням, коли використовується sWAP без нічого в стеку . Я нічого не міг знайти для гольфу; дуже приємна відповідь!
Kevin Cruijssen

1
@KevinCruijssen: О так, я не вважав це тим, що зазвичай є вхідним. Дякую :)
Емінья

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

Спробуйте в Інтернеті!

Не може здатися зловити Python ...

В основному, встановлює кілька загальних рядків , щоб $h, $a, $z, і $b, потім проходить через петлю через кожен з елементів ( hole, log... flea, smile), кожна ітерація виводить відповідний вірш. Існує трохи логіки з !$j++серединою для обліку in/ onперемикання, що відбувається. В іншому випадку всі рядки просто залишаються на конвеєрі, і за замовчуванням Write-Outputми отримуємо нові рядки безкоштовно.

-6 байт завдяки Арнольду.
-3 байти завдяки маззі.
-5 байт завдяки Veskah.
-6 байт завдяки мазі.



@mazzy Це розумний трюк. Мені потрібно це пам’ятати, бо я використовую -splitзовсім небагато для отримання слів.
AdmBorkBork




9

JavaScript (ES6),  201 194 189 188  187 байт

Збережено 1 байт завдяки @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`)

Спробуйте в Інтернеті!


JavaScript (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

Баш, 168 160 байт

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

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

Haskell , 243 215 байт

Зменшено до 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
Деякі поради: а) ви використовуєте sлише один раз, щоб ви могли вбудувати їх. б) ви завжди перед ім'ям і Append що - то t, так що ви можете зробити це функція (Інфікси): t#u=t:"here's a "++u. в) побудова великого списку у функції lз map(++" on the ")(words"smile flea ..."тим коротше. Також: перемістіть усе додане до цього списку в сам список. г) список чисел, які зараз потрібно скинути, ведеться від 8нижчих до 0(одноцифрових чисел!) д) тепер вкладених рядків iтакож зберегти деякі байти. f) не потрібно називати свою основну функцію. Згідно з нашою мета, значення Haskell вважаються належними функціями, тому відмініть значення v=.
німі


1
Ще 3 байти для збереження: замість розуміння списку ви можете використовувати >>=(concatMap) зі списку монаду та вбудовану concatфункцію l. Спробуйте в Інтернеті!
німі

3

JavaScript (Babel Node) , 239 байт

-7 байт від @Oliver *.*

(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

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

Спробуйте в Інтернеті!


-15 байт завдяки @Sara
-5 байт завдяки @ ASCII

Напевно, трохи гольфніше, але не набагато.



@SaraJ Дякую Я опинився під (явно помилковим) враженням, яке склало o=e=б і те, oі eвідношення до одного і того ж об'єкта. Я також думав, що розкол буде довше.
Артеміда Фоул

@ArtemisFowl oі e взагалі посилаються на один і той же об'єкт ... це просто те, що струни незмінні в Python, тому такі речі, як, наприклад +=, створять нову копію замість мутації існуючої
лише для ASCII


@ ASCII-тільки я знаю, але я подумав, що python якось переконався, що вони продовжують посилатися на той самий об’єкт.
Артеміда Фоул


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

Perl 5 , 194 байт

@ ASCII лишив лише 6 байт з буквальними новинками та \lхитрістю, про який я забув

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

Вугілля деревне , 115 106 байт

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

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Редагувати: Збережено 9 байт, скопіювавши мій пакетний код для останнього рядка хору. Пояснення:

≔There's a holeθ

Збережіть рядок 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 oна xs.

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> Вставте "Theres" дірку на дні моря "4 рази.
  • kk Перехід до третього рядка
  • y5w скопіювати "Там отвір"
  • 5eá, вставити кому після "Там отвір"
  • lp вставити після коми
  • D видаліть решту рядка
  • 5brt Малі другої Т
  • Hj4yy скопіюйте 4 рядки з другого рядка
  • Gp Вставте все після першого рядка
  • 4w8ion the <esc>(в кінці першого вірша) перейдіть до першого "отвору" у другому вірші та вставте "на" 8 разів
  • 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

LaTeX, 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-файл, з відступами абзацу і всім іншим.

Негольфірованний і прокоментував:

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

Спробуйте в Інтернеті!

-5 байт завдяки @ASCIIOnly і -2 байти завдяки @someone!

У мене маленька дитина і можу запевнити, що ця пісня є рівною частиною привабливою і дратівливою.


1
Вибачте, що нагадав, що воно існує: o)
Sok

.Any()-> !=""?
ASCII лише


і вам не потрібен пробіл після inв foreach_ _
лише ASCII

@ASCIIOnly - Дякую за поради :)
дата
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.