Kürek çek kürek çek


26

Herkes muhtemelen bir müzik turu olan aşağıdaki şarkıya aşinadır :

Şarkı.

Arka fon

Daha az sayıda insan bunun 4 kişilik versiyonunu söylemeye çalıştığını birkaç arkadaşla hatırlayabiliyor ve başarısız oluyor. Farklı ahenkli şarkıları olan bir şarkının sözlerini dengelemek bir "yuvarlak" şarkı söylemek olarak bilinir ve bugün statik çıktı kullanarak simüle etmek için buradayız. İşte aslında parçayı yapan bir örnek: (ses / video bağlantısı, sesi olacak) .

Meydan okuma

Bu zorluk, metni aynen aşağıdaki gibi çıkarmaktır:

Row, row, row your boat,           |-----------------------------------|-----------------------------------|-----------------------------------
Gently down the stream.            |Row, row, row your boat,           |-----------------------------------|-----------------------------------
Merrily, merrily, merrily, merrily,|Gently down the stream.            |Row, row, row your boat,           |-----------------------------------
Life is but a dream.               |Merrily, merrily, merrily, merrily,|Gently down the stream.            |Row, row, row your boat,           
-----------------------------------|Life is but a dream.               |Merrily, merrily, merrily, merrily,|Gently down the stream.            
-----------------------------------|-----------------------------------|Life is but a dream.               |Merrily, merrily, merrily, merrily,
-----------------------------------|-----------------------------------|-----------------------------------|Life is but a dream.               

kurallar

  • İzleyen beyaz boşluk kabul edilebilir, ancak zorunlu değildir, buna yeni satırlar da dahildir.
  • Tire ve çubuklar istenen çıktının bir parçasıdır, evet.
  • Virgül, dönem, büyük harf kullanımı ve dilbilgisi ile ilgili tüm sözdizimsel öğeler gereklidir.

Bu , standart boşlukları kullanmadan en düşük bayt sayma kodu kazanır.


2
Söylemek istediğim büyük kolmogorov-karmaşıklığı ve sanat-sanat zorluklarından büyük zevk alıyorum ! Hem bu klavye hem de gerçek bir klavye için çözümler yazmak son derece eğlenceliydi. :)
DJMcMayhem

2
@DJMcMayhem bu siteyi bulduğumdan beri günlük hayatımda rastgele zorluklar görüyorum ve aldığım fikirler için küçük bir not defteri tutuyorum, eğlenceli şeyler yapmaya çalışacağım!
Magic Octopus Urn

Yanıtlar:


12

05AB1E , 80 77 bayt

“¢ã,¢ã,¢ã€žžÄ,““èî„‹€€šæ.“"merrily, "4ר“‚쀈€³€…žâ.“'-35×Ð)€ª.B3FDÁ})øvy'|ý,

Çevrimiçi deneyin!

Çalışma devam ediyor.


Bu arada, "05AB1E" harfinin olmadığı sözlükten de oldukça etkilendim. Etkin bir şekilde 05AB1E doğum günün kutlu olsun şarkı söylememi imkansız hale getirdi. Yine de güzel bir cevap, bir sözlük tabanı 05AB1E cevabı haha ​​görmeyi umuyordu. Ayrıca DJMcMayhem de doğru.
Magic Octopus Urn

Bekle, ne ª? Boşver, cümle kasalı, zekice.
Magic Octopus Urn

@carusocomputing: Evet, sadece son zamanlarda olduğunu gördüm. Geçmişte birkaç kez ihtiyacım vardı: P
Emigna

vyʒbir bayt kaydetmek olabilir .
Kevin Cruijssen

10

V , 139 , 128 bayt

iLife is but a dream ±µ |4amerrily, x7b~A|Gently down the stream.±² |3arow, X5b~Ayour boat,±± |3I³µ-|3AòÄó.û-}|ò5DÎ4f|C|

Bir astar! (sortof: P)

Çevrimiçi deneyin!

HexDump:

00000000: 694c 6966 6520 6973 2062 7574 2061 2064  iLife is but a d
00000010: 7265 616d 20b1 b520 7c1b 3461 6d65 7272  ream .. |.4amerr
00000020: 696c 792c 201b 7837 627e 417c 4765 6e74  ily, .x7b~A|Gent
00000030: 6c79 2064 6f77 6e20 7468 6520 7374 7265  ly down the stre
00000040: 616d 2eb1 b220 7c1b 3361 726f 772c 201b  am... |.3arow, .
00000050: 5835 627e 4179 6f75 7220 626f 6174 2cb1  X5b~Ayour boat,.
00000060: b120 7c1b 3349 b3b5 2d7c 1b33 4101 1bf2  . |.3I..-|.3A...
00000070: c4f3 2efb 2d7d 7cf2 3544 ce34 667c 437c  ....-}|.5D.4f|C|

Tam olarak iniş için bonus puan alır 2^7mıyım?

Bu anlamaya biraz zaman aldı. Klavyemdeki ASCII art cevapları gibi tonlarca golf oynayabileceğimi umuyorum ama emin değilim. Göreceğiz. Çok benzer zorluklar (ve her ikisi de çok eğlenceli: D)

Aslında bunu denedim (180):

3irow, ch your boat,±± ||"rCLife is but a dream.±µ ||"lD4imerrily, r||"mCGently down the stream.±² ||"gC³µ-|B"dCR³D
GRDD
MGRD
LMGR
DLMG
DDLM
³DLÍR/r
ÍG/g
ÍM/m
ÍL/l
ÍD/d

Çevrimiçi deneyin!

Hangisi bunu ekler:

RDDD
GRDD
MGRD
LMGR
DLMG
DDLM
DDDL

ve daha sonra genişletmek için ikame yapar. Ama onu tarzıyla çok daha kısa (ve daha eğlenceli TBH).


Haha'ya 0^(2^7)iniş için bonus puan alırsın 2^7. Yine de 180 versiyonunda ilginç olan ilk düşünce.
Magic Octopus Urn

1
@carusocomputing Aww, neden ona (2 ^ 7) / 0 bonus puan vermedin?
Matthew Roh

6

Toplu, 292 288 275 bayt

@set d=-------
@set "d=%d%%d%%d%%d%%d%^|
@set "m=M_ m_ m_ m_^|
@set "s=           ^|
@set "s=Life is but a dream.    %s%%m:_=errily,%Gently down the stream. %s%Row, row, row your boat,%s%%d%%d%%d%"
@for /l %%i in (1,1,6)do @call:c
:c
@echo %s:~111,146%
@set "s=%d%%s%

Düzenleme: Retina cevabımda kullandığım alt hilenin bir versiyonunu kullanmak için kodu yeniden yazarak 13 bayt kaydedildi. Elverişli olarak altı kez döngü yapabilir ve daha sonra döngü gövdesinin yedinci bir tekrarlaması için geçebilirim, bu durumda |s çıktısı için gereken alıntı çok fazla zorlanmaz, ancak altlığı ^seçerken dikkate almak zorundayım .


6

Python 3, 252 235 208 206 205 bayt

Tamam tamam. İşte daha az sıkıcı bir cevap:

w=' '*11
t=["Row, row, row your boat,"+w,"Gently down the stream. "+w,"Merrily,"+" merrily,"*3,"Life is but a dream.    "+w,*['-'*35]*3]
for a in zip(*[t[z:]+t[:z]for z in range(7,3,-1)]):print(*a,sep='|')

Eski cevap, 252 bayt:

Sıkıcı cevap ve diğer Python cevapları daha kısa, ama bu yaklaşımın daha kısa olup olmadığını denerim diye düşündüm. Python 3 bayt / dizede tasarruf 2-3 farka rağmen hem çünkü gzipve base64Python 2'de boktan bulunmaktadır.

from base64 import*
from gzip import*
print(decompress(b85decode('ABzY8Fgf~I0{;ujFV|5hf)Waq`K3h)N%@H-ItmC-qe~c2OAVKMYF<fBr9w)6d7eT^Myf(_Nl|KIuATz2dxGfaW-i~<qN2>4N*#q<oQxVex|z!-Gc8pivsfXiv_v6MAqB%CkU6w=GZ!&|OJj#}Q7chW$(>wu%p_Rd3;?AKH=M}>000')).decode())

Orijinal uzunluğun% 25'i, oldukça etkileyici, ancak çok daha akıllı olabilir ve yalnızca ilk yinelemeyi sıkıştırabilir, yeni hatlara ayırabilir ve 4 vardiya gerçekleştirebilirsiniz. Bu muhtemelen pythonun diğer uygulamasını yener. Düşünecek düşünceler. Ben -1 olanı değildim, bunu kimin yaptığını bilmiyorum.
Magic Octopus Urn

@carusocomputing Doğru. Gerçekten çok fazla gereksiz bir sabit çıktı görevi için değirmenden kaçan sıkıştırma işleminin ne kadar iyi çalıştığını merak ettim. Cevabımı daha kısa ve daha az aptal bir cevaba dönüştürdü.
L3viathan

Sıkıştırma ayarında da tekrar düzenleme yapabilir misiniz? Ben şahsen, bu yaklaşımı da ilginç buldum. Yani, bayt sayısının basit gzip ile ne kadar düşük olduğu. Çabadan bağımsız olarak Huffman veya ... ... 1'i kullanmalı.
Magic Octopus Urn

1
@ carusocomputing Sanırım altına ekleyeceğim. Ayrıca, bence göreceli olarak harika yapan, söndürmenin Huffman kısmı değil, LZ kısmı.
L3viathan

1
@ JonathanAllan Gerçekten de, bunu özledim. Sabit, bir bayt kaybetti.
L3viathan

5

PowerShell , 224 207 202 bayt

$a=' '*11;0..6|%{((0..4+4+4)[($_,($_+=6),--$_,--$_|%{$_%7})]|%{("Row, row, row your boat,$a","Gently down the stream.$a ","Merrily,$(' merrily,'*3)","Life is but a dream.$a    ",('-'*35))[$_]})-join'|'}

Çevrimiçi deneyin! (ekranınız yeterince geniş değilse çıkış sarılır)

Güzel keder, bu dizi oluşturma işi çirkin, ama 17 byte kurtardı, yani ...

0..6|%{((0..4+4+4)[($_,($_+=6),--$_,--$_|%{$_%7})]

'Dan' 0a dönüyoruz 6. Her yineleme, bir diziye indeksliyoruz (0,1,2,3,4,4,4). Dizin oluşturma, geçerli basamağa, geçerli basamağa +6, o -1ve ardından buna dayanır -1 . Bunların her biri daha sonra modulo yaptığımız bir döngüden beslenir %7. Gittiğimiz Örneğin, 0dış ait 0..6döngü, daha sonra bu olurdu 0,6,5,4o zaman, her %7yüzden, 0,6,5,4. Bu (0,1,2,3,4,4,4)diziye endeksli , yani çıktı 0,4,4,4. Girdi 1için 1,7,6,5o zaman 1,0,6,5hangi verimi alıyoruz 1,0,4,4. Ve bunun gibi. (biz olsaydı işler çok daha kolay olurdu.clamp fonksiyonumuz )

Bunlar her seferinde bir döngüye tükürürler |%{}. Her yineleme, şarkı sözleri dizisindeki uygun noktaya endekslenir ve bu dizgiyi boru hattında bırakırız. Bu dizeler daha sonra çıkış çizgisini biçimlendirmek için -joinbirlikte sıralanır |. Bu dizgiler boru hattında bırakılır ve çıktı örtüktür.

Value Ink sayesinde bazı baytlar kaydedildi.


Zaten $a11 alana kaydettiğinizde, dördüncü çizgiyi -3 bayt $ayerine 4 boşlukla sona erdirebilirsiniz $(' '*15), tamam mı?
Değerli Mürekkep

4

JavaScript (ES8), 285 256 240 231 229 217 214 213 211 210 bayt

_=>"0444104421043210432144324443".replace(/./g,(x,y)=>a[x].padEnd(35)+`
|||`[++y&3],a=["Row, row, row your boat,","Gently down the stream.","Merrily,"+(m=" merrily,")+m+m,"Life is but a dream.","-".repeat(35)])

Arnauld'un cevabından bir numara ödünç alarak birkaç bayt kurtardı


Dene

f=

_=>"0444104421043210432144324443".replace(/./g,(x,y)=>a[x].padEnd(35)+`
|||`[++y&3],a=["Row, row, row your boat,","Gently down the stream.","Merrily,"+(m=" merrily,")+m+m,"Life is but a dream.","-".repeat(35)])

o.innerText=f()
<pre id=o>


1
'0444,1044,2104,3210,4321,4432,4443'.split, .mapsize 10 byte kazandırır. Ayrıca, padEndES6'nın, hatta ES7'nin bir parçası değildir.
Neil

Hata! Bunu ES8’e güncellemek istedim - teşekkürler, @ Neil. Ve bahşiş için teşekkürler, ama beni 12 bayt kazandıran başka bir çözüm üzerinde çalışıyordum.
Shaggy

4

PHP, 191 Bayt

for(;$n<7;$n++)for($m=0;$m<4;)echo $m?"|":"\n",str_pad($i=["Row, row, row your boat,","Gently down the stream.",M.($t="errily,")." m$t m$t m$t","Life is but a dream."][$n-$m++],35," -"[!$i]);

Çevrimiçi deneyin!

Expanded

for(;$n<7;$n++)
  for($m=0;$m<4;)
    echo $m?"|":"\n"
     ,str_pad($i=["Row, row, row your boat,","Gently down the stream."
       ,M.($t="errily,")." m$t m$t m$t","Life is but a dream."][$n-$m++]
       ,35," -"[!$i]);

Parantezleri ekodan kaldırarak bir karakter kaydedebilirsiniz (bu bir işlev değildir)
Robbie Averill

@RobbieAverill Biliyorum ama parantez üçlü bir operatör içeriyor ve onu kaldırabiliyorum sadece konuyu virgülle değiştiriyorum
Jörg Hülsermann

3

Python 2 , 199 bayt

w=' '
s=['-'*35]
t=['Row, row, row your boat,'+w*11,'Gently down the stream.'+w*12,'Merrily,'+' merrily,'*3,'Life is but a dream.'+w*15]
print'\n'.join(map('|'.join,zip(t+s*3,s+t+s+s,s+s+t+s,s*3+t)))

Çevrimiçi deneyin!


14 byte tasarruf için @ mathjunkie için teşekkürler


'Merrily, merrily, merrily, merrily,'('merrily, '*4).capitalize()doğru olabilir mi? Yoksa bu Python değil mi?
Magic Octopus Urn

2
Veya daha kısa,'Merrily,'+' merrily,'*3
matematik bağımlısı

2

CJam , 128 122 bayt

"Row, row, row your boat,""gently down the stream."'M" merrily,"4*2>+"Life is but a dream."'-35*__]{35Se]}%a4*4,.m>z'|f*N*

Çevrimiçi deneyin!

açıklama

"Row, row, row your boat,"  e# Push this string.
"gently down the stream."   e# Push this string.
'M                          e# Push the character 'M'.
" merrily,"4*               e# Push the string " merrily, merrily, merrily, merrily,".
2>+                         e# Remove the first two letters of it, and append it to 'M',
                            e#   fixing the capitalization.
"Life is but a dream."      e# Push this string.
'-35*__                     e# Push a string containing 35 hyphens and make two copies of it.
]                           e# Collect all these strings in an array.
{35Se]}%                    e# Pad each of them to length 35 by adding spaces to the right.
a4*                         e# Repeat the array 4 times.
4,                          e# The range [0 1 2 3].
.m>                         e# Rotate each subarray of strings rightward by the corresponding
                            e#   number in the range.
z                           e# Transpose the array.
'|f*                        e# Join the strings on each row with '|' characters.
N*                          e# Join the rows together with newlines.

2

SOGL , 83 bayt

┌׀0ρMVxDrž|⁷ΨB≈π93|↑D~Νķ‰¤t╤▼ΣΗ⁶⅔¾№⁷Ζ÷│²╥Ν9°‘-”)0ΔH«‘4*jŗ"ΣΨ¬¹‘4*;+7{’⁄{»}⁽:’∞n1wpX

1. bölüm ┌׀0ρMVxDrž|⁷ΨB≈π93|↑D~Νķ‰¤t╤▼ΣΗ⁶⅔¾№⁷Ζ÷│²╥Ν9°‘sıkıştırılmış bir dizedir ve sonuçta

`life is but a dream.               |-|gently down the stream.            |row, row, row your boat,           |`

Bunlar ters çevrilmiş çizgilerdir (çünkü bu satır satır yazdırılır), "merrily" kısmı programda değiştirilmek üzere kesilir.
Programın geri kalanı:

...‘                                        Push the compressed string
      )0ΔH«‘                                push "merrily, "
            4*                              repeat it 4 times
              j                             take the last letter off
    -”         ŗ                            replace "-" with the merrily line
                "ΣΨ¬¹‘                      push 35 dashes with an appending "|"
                      4*                    repeat it 4 times
                        ;+                  add inverted ("---|---..."+"Life is but a dream  ...")
                                            The resulting string of above is "-----------------------------------|-----------------------------------|-----------------------------------|-----------------------------------|life is but a dream.               |merrily, merrily, merrily, merrily,|gently down the stream.            |row, row, row your boat,           |"
                          7{                repeat 7 times
                            ’⁄{»}            rotate right 35 times
                                 ⁽           uppercase the 1st letter
                                  :          duplicate
                                   ’∞n       split into parts of length 135
                                      1w     get the 1st one
                                        p    output that
                                         X   delete the splat array

2

/// , 200 bayt

/_/     //&/errily,//*/ m&//+/-------//@/Row, row, row your boat, __//#/Gently down the stream.  __//$/M&***//%/Life is but a dream.___//~/+++++/@|~|~|~
#|@|~|~
$|#|@|~
%|$|#|@
~|%|$|#
~|~|%|$
~|~|~|%

Çevrimiçi deneyin!

Basit, ortak oluşumları yerine kullanır.


2

PHP, 179 bayt:

for($m="errily,";$i<28;)echo str_pad($s=["Row, row, row your boat,","Gently down the stream.","M$m m$m m$m m$m","Life is but a dream."][($i>>2)-$i%4],35," -"[!$s]),"
|||"[++$i%4];

ungolfed

for($i=0;$i<28;$i++)
{
    $x=$i%4;
    $y=$i>>2;

    $s=["Row, row, row your boat,",
        "Gently down the stream.",
        M.($m="errily,")." m$m m$m m$m",
        "Life is but a dream."
    ][$y-$x];

    $pad_string = $s ? " ":"-";
    $postfix = $x<3 ? "|" : "\n";
    echo str_pad($s,35,$pad_string),$postfix;
}

2

JavaScript (ECMAScript 2017), 191 187 182 bayt

Shaggy sayesinde 3 bayt kaydedildi

f=(i=27,s=['Life is but a dream.','Merrily,'+(m=' merrily,')+m+m,'Gently down the stream.','Row, row, row your boat,'][(i>>2)-i%4]||'')=>i?s.padEnd(35,' -'[+!s])+`
|||`[i&3]+f(i-1):s

o.innerHTML = f();
<pre id=o style="font-size:10px"></pre>


Sanırım 'Merrily,'+' merrily,'.repeat(3)bir bayt kurtarıyor.
Neil

Oh, ve padEndES7’de olmadığını, ES6’yı bırakmadığını söylemeyi unuttum .
Neil

1
M${s='errily, '}m${s}m${s}myerine M${s='errily,'} m${s} m${s} m2 bayt kaydeder
Luke

1
3 bayt ile kaydedebilirsiniz. "Merrily,"+(s=" merrily,")+s+s .
Shaggy

1
@Shaggy Ah evet. Bu en iyi seçenek gibi görünüyor. Teşekkürler!
Arnauld,

2

Microsoft SQL Server, 421 bayt

with v as(select left(s+space(35),35)s,n from(values('Row, row, row your boat,',1),('Gently down the stream.',2),('Merrily, merrily, merrily, merrily,',3),('Life is but a dream.',4))t(s,n))select isnull(v.s,s.s)+'|'+isnull(b.s,s.s)+'|'+isnull(c.s,s.s)+'|'+isnull(d.s,s.s)from v full join v b on v.n=b.n+1 full join v c on b.n=c.n+1 full join v d on c.n=d.n+1 cross apply(select replicate('-',35)s)s order by isnull(v.n,9)

Çevrimiçi Kontrol Et


Onu seviyorum. Veritabanı benim mesajım!
Zahiro Mor,

2

C (GCC), 231 230 bayt

Ceilingcat sayesinde -1 bayt!

#define m"errily, "
char s[7][35]={"Life is but a dream.","M"m"m"m"m"m"m"m,"Gently down the stream.","Row, row, row your boat,"};f(l,c){memset(s[4],45,'k');for(l=7;l--;)for(c=0;c<4;)printf("%-35.35s%c",s[(4+l+c++)%7],"|||\n"[c]);}

Oldukça basit. İlk önce, "merrily" kısmını çarpanlara ayırmak için makrodan geçen 7 satır dizisi dizisini oluşturur, ardından çizgi çizgileri a ile doldurulur memset. Ardından çizgiler yeterli miktarda ofset ve ayırıcılar ile yazdırılır.

Çevrimiçi deneyin!


@ceilingcat teşekkürler!
Quentin

1

MATLAB, 280 bayt

a='errily,';
z={'Row, row, row your boat,';'Gently down the stream.';['M',a,' m',a,' m',a,' m',a];'Life is but a dream.'};
z{5}(1:35)='-';
y=5*ones(7,4);
for j=1:4;z{j}(end+1:35)=' ';y(j:j+3,j)=(1:4)';end
x=z(y);
for j=1:7;fprintf('%s|%s|%s|%s\n',x{j,1},x{j,2},x{j,3},x{j,4});end

Hücre dizisi indekslemesi oldukça maliyetlidir, bu, bazı baytları atmanın en kolay yolu gibi görünmektedir (mümkünse).


Siteye Hoşgeldiniz!
DJMcMayhem

1

Retina , 153 150 bayt


<-|>Life is but a dream.15|M!< m!>|Gently down the stream.12|Row, row, row your boat,11<|->
<(.*?)>
$1$1$1
!
errily,
-
35$*-
\d+
$* 
r!&`.{71}\|.{71}

Çevrimiçi deneyin!

İsteğe bağlı çalıştırma uzunluğu kodlamasını denedim, ancak $1$*$2istediğimi yapmıyor ve dizeleri tekrarlamak çok zor oldu. Düzenleme: errily,Gereksiz bir kaldırarak 2 bayt kodlayarak ve 1 bayt kaydedildi ^.


1

Python 2, 225 Bayt

w=[["-"*35]*7for _ in[0]*4]
for i in [0]*4:w[i][i:i+4]=[a.ljust(35)for a in["Row, row, row your boat,","Gently down the stream.","Merrily,"+" merrily,"*3,"Life is but a dream."]]
print "\n".join(["|".join(i)for i in zip(*w)])

Çevrimiçi deneyin!


1

Perl 5 , 215 bayt

$m='merrily,';$s=' 'x11;$l='-'x35;
@t=@s=("Row, row, row your boat,$s","Gently down the stream. $s",
       "\u$m $m $m $m","Life is but a dream.    $s",$l,$l,$l);
map{$i--;map$t[$_].="|".$s[$i++%7],0..6}1..3;print"$_\n"for@t

Çevrimiçi deneyin!


1

Swift , 416 406 405 380 372 307 bayt

var f=String.init(repeating:count:);_={[[0,4,4,4],[1,0,4,4],[2,1,0,4],[3,2,1,0],[4,3,2,1],[4,4,3,2],[4,4,4,3]].forEach{print($0.map{["Row, row, row your boat,"+f(" ",11),"Gently down the stream."+f(" ",12),"Merrily,"+f(" merrily,",3),"Life is but a dream."+f(" ",15),f("-",35)][$0]}.joined(separator:"|"))}}

Burada deneyebilirsiniz .

@ Mr'a teşekkürler. Bana 65 byte kazandırdığı için Xcoder!


1
Hızlı bir cevap görmek için harika!
brimstone

1
fAşağıdaki ile ilgili bildirimi değiştirerek var f=String.init(repeating:count:)
kısaltabilirsiniz

1
Ayrıca, kum havuzunda aramamalısınız print(o()), sadece aramanız gerekir o()çünkü printiçinde bir ifade vardır, bu ()da çıktının sonunda
Bay Xcoder

1
Ayrıca, gereksiz boşlukları kaldırın. Çok fazla bayt kazandıracak. Geliştirilmiş bir sürümü yorumlayacağım.
Bay Xcoder

1
İşte geliştirilmiş bir sürüm, 309 bayt. Bu 63 bayt daha kısa ve golf oynayabilir, inanıyorum
Bay

1

T-SQL, 296 277 276 bayt

PRINT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('1|0|0|0
2|1|0|0
3|2|1|0
4|3|2|1
0|4|3|2
0|0|4|3
0|0|0|4',0,REPLICATE('-',35))
        ,1,'Row, row, row your boat,6')
        ,2,'Gently down the stream. 6')
        ,3,'M5 m5 m5 m5')
        ,4,'Life is but a dream.    6')
        ,5,'errily,')
        ,6,SPACE(11))

Başlangıçtaki satır sonları orijinal dizenin bir parçasıdır, sonun yanındaki satır sonları yalnızca gösterim amaçlıdır ve bayt toplamı için sayılmaz.

Conrade SparklePony'nin cevabından büyük ölçüde ilham aldı . Andrei Odegov'un SQL cevabından farklı bir teknik .

Oldukça düz ileri çoklu değiştirme, ancak baytları kurtarmaya yardımcı olan birkaç şey:

  • SQL, orijinal dizgede satır kesmelerine izin verir
  • Karakterler yerine rakamları kullanmak, bir dizi tek alıntıyı silmeme izin veriyor.
  • İç içe değiştirmeler (5 ve 6), beni daha da fazla bayttan kurtar (teşekkürler, @ t-clausen.dk)

Keşke REPLACEbütün REPLACEs daha kısa bir şeyle yapabilseydim . Hmm ....


1
Eğer 11,12,15 alanını kendi yönteminizi kullanarak değiştirirseniz, 1 byte tasarruf edebilirsiniz
t-clausen.dk

1

Japt -R , 99 95 94 92 90 89 87 bayt

R³i`Life  ¿t a Ým.
M{34î`Îk, m`}
Gt§ ܵ e Ðpam.
Row, w, w yr ¾,`ú)·ú-
£éY Ťq|

Dene

R³i`L...{34î`...`}...,`ú)·ú-
R                                :Newline
 ³                               :Repeat 3 times
  i                              :Prepend
   `                             :  Decompress
    L...                         :    "Life is but a dream.\nM"
        {                        :    Interpolate
         34î                     :      Repeat & slice to length 34
            `...`                :        The compressed string "errily, m"
                 }               :    End interpolation
                  ...,           :    "\nGently down the stream.\nRow, row, row your boat,"
                      `          :  End decompression
                       ú         :  Right pad each line with spaces to the length of the longest
                        )        :End prepend
                         ·       :Split on newlines
                          ú-     :Right pad each element with "-" to the length of the longest
£éY Ťq|                         :Assign the above to U
£                                :Map each element at 0-based index Y
 éY                              :  Rotate U right Y times
    Å                            :  Slice off the first element
     ¤                           :  Slice off the first two elements
      q|                         :  Join with "|"
                                 :Implicit output, joined with newlines

0

Yakut, 162 bayt

7.times{|i|puts (~i..~i+3).map{|j|[*[?-*35]*3,"Life is but a dream.",?M+['errily,']*4*" m","Gently down the stream.","Row, row, row your boat,"][j].ljust(35)}*?|}

0

Java, 295 bayt / 272 259 bayt

her 4 sütunda yeni satırlarla (295b)

void r(){String m=" merrily,",t="-------",s="     ",e=t+t+t+t+t;String[]v={"Gently down the stream.  "+s+s, "Merrily,"+m+m+m, "Life is but a dream."+s+s+s, e, e, e, "Row, row, row your boat, "+s+s};for(int i=0;i<7;i++){for(int j=6+i;j>2+i;j--)System.out.print(v[j%7]+'|');System.out.println();}}

Çevrimiçi Deneyin

yeni satır sürümü yok (259b):

void r(){String m=" merrily,",t="-------",s="     ",e=t+t+t+t+t;String[]v={"Gently down the stream.  "+s+s, "Merrily,"+m+m+m, "Life is but a dream."+s+s+s, e, e, e, "Row, row, row your boat, "+s+s};for(int i=0;i<28;i++)System.out.print(v[(6-i%4+i/4)%7]+'|');}
  • 1 içine döngüler için yoğunlaştırılmış 2

Çevrimiçi Deneyin


0

Japt , 158 157 bayt

='|L=`Row, žw, žw yŒr ¾…,`+Sp11 +UV=`Gt§ ܵ e Ðpam.`+S³²²+UW=`M€Îk,`+` ´rÎk,`³+UJ=W+VX=`Life ‰ ¿t a Ý„m.`+Sp15 +UZ='-p35 +U[LZ³RVLZ²RJLZRXJLRZXJRZ²XWRZ³X]q

Çevrimiçi deneyin!



0

Perl 5 , 163 bayt

say join'|',(('-'x26)x3,"Life is but a dream".$"x7,ucfirst(join$",("merrily,")x3),"Gently down the stream    ",ucfirst "row, "x3 ."your boat  ")[-$_..3-$_]for 1..7

Çevrimiçi deneyin!


0

Runic Enchantments , 292 bayt

B͍"-"'#*"|"3s
"Row, row, row your boat,"b" "S*q"|"3sB͍>01B10B3*1-akr@>12B01B10B2*1-akr@>13B12B01B10B1-akr@>14B13B12B01B1-akr@>10B3*14B1-r0[10B2*14B13B1-akr0[10B14B13B12B1-akr]]@
B͍"Gently down the stream."c" "S*q"|"3s
B͍"Merrily,"3" merrily,"S*q"|"3s
B͍"Life is but a dream."f" "S*q"|"3s

Çevrimiçi deneyin!

Ben genelde yapmam sorunları , ancak düzen çok fazla sorun yaşamadan çalışabileceğim bir şeydi. Runik, rastgele dizeleri sıkıştırmak için iyi yollara sahip değildir, bu yüzden birlikte çalışmamız gereken tekrarlayan parçalardır.

Açıklama:

Hafifçe açmak:

B͍"-"'#*"|"3s
B͍"Row, row, row your boat,"b" "S*q"|"3s
B͍"Gently down the stream."c" "S*q"|"3s
B͍"Merrily,"3" merrily,"S*q"|"3s
B͍"Life is but a dream."f" "S*q"|"3s
>11B10B3*1-akr@
>12B11B10B2*1-akr@
>13B12B11B10B1-akr@
>14B13B12B11B1-akr@
>10B3*14B1-r0[10B2*14B13B1-akr0[10B14B13B12B1-akr]]@

İlk 5 satır, şarkının her bir kısmını oluşturmak için işlev görür (burada ilk satır, 2 baytın üzerine kaydetmek -için ondalık değerini kullanarak ayırıcı için 35 değerini oluşturur ). Bir fonksiyona giren tüm IP'lerin de ayrılacağından emin olmak için return komutu satırın başındadır.#3X5+ , aynı zamanda bir kaç döngüden sonra işlevi , programlar dikdörtgen ve boş hücreler olduğu için, IP'lerin birleşmesini önlemek (işlevlerin eksik satırlarıyla sonuçlanır) örtüktür.

Sonraki dört satır, çıktının ilk dört satırını yazdırmaktan sorumludur.

Beşinci satır daha sonra son 3 satır çıktıyı yazdırır. En az bir stanza-spacer ile başlaması gereken üç hattın tümü nedeniyle, 3 ayrı IP kullanmak mümkün değildir (birleşmeyi önlemek için gecikmelere ihtiyaç duyacakları için). >, y, @Ve bir yeni satır maliyeti fazla (4) bayt 0[...]burada (3 bayt)... rasgele talimatları (örneğin. Çıkışının bir çizgi).

Tersine değiştirme >ve @tek bir IP kullanma, daha fazla bayt gerektirir.

Son olarak, beş giriş noktası satırının tümünü 2. satıra birleştirmek, 5 bayt değerinde yeni satır tasarrufu sağlar. Sadece ranch-return komutunun, fonksiyonun işlevselliğini koruyarak ilk satırının sonuna doğru hareket etmesini sağlamalıyız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.