Bana battaniye yap!


16

Böyle bir battaniye istiyorum. Her şerit aşağıya, altına, üstüne, altına gider. Yazdırabilir misiniz?

\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\

Her satırın sonundaki boşluklar ve sondaki satırlar kabul edilebilir.

Unutmayın, bu , bu yüzden en az baytlık kod kazanır.

Liderler

İşte hem düzenli bir skor tablosu hem de kazananları dile göre gözden geçirmek için bir Yığın Parçacığı.

Yanıtınızın göründüğünden emin olmak için lütfen aşağıdaki Markdown şablonunu kullanarak yanıtınızı bir başlıkla başlatın:

# Language Name, N bytes

Ngönderiminizin büyüklüğü nerede . Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Başlığınıza birden fazla sayı eklemek istiyorsanız (örneğin, puanınız iki dosyanın toplamı olduğu veya yorumlayıcı bayrak cezalarını ayrı olarak listelemek istediğiniz için), gerçek puanın başlıktaki son sayı olduğundan emin olun :

# Perl, 43 + 2 (-p flag) = 45 bytes

Dil adını, daha sonra skor tablosu snippet'inde görünecek bir bağlantı da yapabilirsiniz:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


Sağ kenar yanlış hizalanmış görünüyor.
Sihirli Ahtapot Urn

Sol kenar örtüşmüyor mu?
xnor

@xnor Üzgünüm, benim hatam.
Oliver Ni

@carusocomputing Sabit.
Oliver Ni

10
Sandbox'ı kullansaydınız, bu ana kadar devam etmeden önce bu sorunlar önlenebilirdi.
Mego

Yanıtlar:


8

Python 2, 84 bayt

R=range(24)
for i in R:print''.join(" \// \/\\"[i+~j>>2&1^i+j>>1&2^i&4]for j in R*2)

Aritmetik işlemleri bitsel işlemlere dönüştüren 6 baytlık Sp3000 sayesinde.


Vay ... nasıl ????
Oliver Ni

1
i+~j>>2&1^i+j>>1&2^i&4, belki?
Sp3000

@ Sp3000 Bu güzel bitsel bir öncelik. Hatırlamalıyım ki aritmetik olarak türetilmiş boolean'lar bir endekste birleştirirken.
xnor

5

Pyth, 36 bayt

V24sm@" \// \/\\"im<3%k8++BNdt-NdT48

Çevrimiçi deneyin: Gösteri

Açıklama:

3 koşulu kontrol ederek sembolü belirleyebiliriz:

A := row % 8 > 3
B := (row + column) % 8 > 3
C := (row - column - 1) % 8 > 3

[A,B,C]İkili sayı olarak yorumlarsak , aşağıdaki eşleştirmeyi alırız:

01234567
 \// \/\

Ayrıca [A,B,C]ondalık sayı olarak yorumlayabilir ve dizede modüler bir dizinli arama gerçekleştirebiliriz. Bu bir fark yaratmaz çünkü 10 mod 8 = 2.

Şimdi koda:

V24yineliyor N(row-idx) [0, 1, ..., 23].

sm...48içindeki numaraları d(column-idx) [0, 1, ..., 47]karakterlerle eşler ve birleştirilmiş dizeyi yazdırır.

++BNdlisteyi oluşturur [N, N+d], +...t-Ndekler N-d-1. Bu yüzden listeyi aldık [N, N+d, N-d-1]. m<3%k8hesaplanan her sayıyı kontrol eder k, eğer 3 < k % 8bu listeyi koşullarla verir[A, B, C] .

i...T bunu ondalık sayıya çevirir ve sonra @" \// \/\\" dizede arama yapar.

Aşağı yukarı aynı kod Python2: 98 bayt :

R=range(8)
for r in R*3:print''.join(" \// \/\\"[4*(r>3)+2*((r+c)%8>3)+((r-c-1)%8>3)]for c in R*6)

Sadece Pyth ile uğraşmaya çalışmak, böylece iyi bir açıklama ile iyi bir cevap benden bir oy alır. benim temel 3 deney sonra Pyth deneyecekti :)
ElPedro

Python2 cevabını da göndermelisin ...
Jerry Jeremiah

3

Perl, 209 + 17 = 226 bayt

İle koş -mList::Util=max -M5.010(ikinci bayrak ücretsizdir). Bayt sayısı yarışmaları kazanmıyor, ama işte benim çözümüm.

for(0..7){@b=(1)x8;@b[$_+3..$_+7]=(3)x4;@b[7-$_..10-$_]=(2)x4;for$c(0..2){$b[$c+8]=max$b[$c+8],$b[$c];$b[5-$c]=max$b[5-$c],$b[13-$c];}push@a,sprintf("%-8s",join("",@b[3..10])=~tr[123][ /\\]r)x6;}say for@a,@a,@a

Okunabilir:

for(0..7){
    @b=(1)x8;
    @b[$_+3..$_+7]=(3)x4;
    @b[7-$_..10-$_]=(2)x4;
    for$c(0..2){
        $b[$c+8]=max$b[$c+8],$b[$c];
        $b[5-$c]=max$b[5-$c],$b[13-$c];
    }
    push@a,sprintf("%-8s",join("",@b[3..10])=~tr[123][ /\\]r)x6
}
say for@a,@a,@a

Prosedürel olarak her segmenti oluşturur, ardından deseni 6 kez tekrarlar, ardından toplam sonucu 3 kez çıkarır.


Woah, ben artık Perl'de yaptığım için artık en uzun cevap değilim :) +1.
ElPedro

Bunu herkesle aynı şekilde yapabilirdim (sadece bir demet satır basmak), ama daha serin olduğunu hissettiğim için açıkça algoritmik bir şeyler yapmaya karar verdim.
Gabriel Benamy

Standartlarıma göre harika. İlginç bir meydan okuma olduğu için daha önce hiç denemediğim bir yaklaşım izledim. Dediğim gibi +1. Yorumum tarafından hakaret amaçlanmamıştır. Bu yüzden iptal ettim.
ElPedro

3

Piton 3, 174 172 138 bayt

print("\n".join(o*6for o in("bbbb////"," bb//// ","  ////  "," ////bb ","////bbbb","b//  bbb","bb    bb","bbb  //b")*3).replace("b","\\"))

Battaniyede bulabildiğim en küçük deseni buldum ("altında" ve "üzerinde" deseni), bir listede sıkışmış ve hepsini açmak için bazı liste anlama ve dize manipülasyonu ekledi. Kaçan tüm ters eğik çizgileri "b" ile değiştirdi ve birkaç bayt kaydetmek için daha sonra geri değiştirdi.

2 bayt golf için Oliver için teşekkürler!

Deseni değiştirerek 34 bayt aldı - battaniyenin tüm deseni şimdi tek bir listede, bu nedenle deseni açmak için sadece bir döngü gerekiyor.


1
PPCG'ye Hoşgeldiniz! güzel ilk yazı! Python 2'de bir bayt tıraş edebilirsiniz, bence baskı için parentlere ihtiyacınız yok.
Rɪᴋᴇʀ

1
Teşekkür ederim Easterly Irk, kod golf çok uzun zamandır dinleniyor, bu yüzden katılmaya karar verdim. :)
TheCrazyInventor

1
0*6u*6
Oliver Ni

1
Çift ters eğik çizgi için "b" kullanarak 4 bayt kaydedebilirsiniz ve tek bir ters eğik çizgi ihtiyacınız olan her yerde sadece kaçan kullanın:print((("\n".join(o*6 for o in("bb////"," b//// "," //// "," ////b ",""))+"\n".join(u*6 for u in("////bb","\\// b\\","b b","b\\ //\\","")))*3).replace("b","\\\\"))
dzaima

dzaima: kodunuz geçerli bir battaniye oluşturmuyor.
TheCrazyInventor

3

Python 2, 171 170 168 bayt

a,b,c=r"\\","/"*4," "
f,g=c*2,c+a+b+c
d=(a*2+b)*6,g*6,(f+b+f)*6,g[::-1]*6,(b+a*2)*6,('\\//'+f+a+"\\")*6,(a+f*2+a)*6,(a+"\\"+f+'//\\')*6
for e in 0,1,2:print'\n'.join(d)

Güzel ve akıllı değil. En sık kullanılan dize grupları için değişkenleri ayarlar, sonra bunları birleştirir ve sonucu 3 kez yazdırır. Eğer daha iyi bir yaklaşım bulamazsanız daha sonra golf deneyin.

Bir atamada ham girdi kullanılarak 1 bayt kaydedildi. Teşekkürler @ nedla2004

-2 bir kaç değişken atayarak yine de ciddi bir rakip değil


1
Bir r "\\" olarak tanımlayabilirsiniz
nedla2004

Teşekkürler @ nedla2004 İyi bir nokta. Bunu oldukça hızlı bir şekilde bir araya getirdi ve daha sonra bakacaktı. Bu iyi bir başlangıç ​​:)
ElPedro

En *6rağmen her tuple elemanı üzerinde bir yol bulmak istiyoruz . Herhangi bir fikir?
ElPedro

1
Bunu nasıl yapabileceğinizi bilmiyorum, ama son satır olabilir exec r"print'\n'.join(d);"*3.
nedla2004

Ben sadece ilgi dışında bir alternatif gönderdim. Bu konuda yorumlarınızı değer.
ElPedro

2

SOML , 106 bayt

3{"\\\\////”6*p" \\//// ”6*p"  ////  ”6*p" ////\\ ”6*p"////\\\\”6*p"\//  \\\”6*p"\\    \\”6*p"\\\  //\”6*p

son zamanlarda eklediğim bir işlevi kullanan rakip olmayan bir sürüm: ( 83 67 66 bayt)

açıklama:

  →$\\→#////→@”6*p"→~3{"##@~ #@ ~$@$~ @# ~@##~\//$#\~#$$#~#\$//\~”
  →$                                                                in the further code replace "$" with "  "
    \\→#                                                            replace "#" with "\\"
        ////→@                                                      replace "@" with "////"
              ”6*p"→~3{"##@~ #@ ~$@$~ @# ~@##~\//$#\~#$$#~#\$//\~” the code to exchange stuff in

so that results in:
”6*p"→~3{"\\\\////~ \\//// ~  ////  ~ ////\\ ~////\\\\~\//  \\\~\\    \\~\\\  //\~”
”6*p"→~3{"A~B~C~D~E~F~G~H~”  modified version of the program (removing "/","\" and " " and replaced with A,B,C,ect.)
”6*p"→~                      replace in the further program "~" with ”6*p" which is:
”                            end string
 6*                          repeat the last thing in stack 6 times
   p                         output the result
    "                        start a string
resulting program: 
3{"A”6*p"B”6*p"C”6*p"D”6*p"E”6*p"F”6*p"G”6*p"H”6*p"”
shortened example:
3{"A”6*p"B”6*p"H”6*p"”
3{                      repeat 3 times
  "A”                   push "A" (original: "\\\\////")
     6*p                output it multiplied by 6
        "B”             push "B" (original: " \\//// ")
           6*p          output it multiplied by 6
              "H”       push "H" (original: "\\\  //\")
                 6*p    output it multiplied by 6
                    "”  push an empty string (shorter to do ~” than ”6*p)

2

Ruby, 75 bayt

1152.times{|i|$><<"\\/ /\\\\ /"[(i+j=i/48)/4&1|(i-j)/2&2|j&4]+$/*(i%48/47)}

Değiştirilebilir 4 baytlık bir dize yerine, diğer parametrelere ek olarak j & 4 ile endekslenmiş tek bir 8 baytlık dize araması kullanarak daha iyi golf oynar.

Ruby, 81 bayt

1152.times{|i|j=i/48%8;$><<"\\#{'/\\'[j/4]} /"[(i+j)/4&1|(i-j)/2&2]+$/*(i%48/47)}

Çapraz çizgileri karakter karakter basar. Doğru karakter, her bir telin varlığına / yokluğuna bağlı olarak 4 karakterlik bir dizeden seçilir. Üst üste binme karakteri hangi ipin üstte olduğuna bağlı olarak değişir.

Yorumlananlar

1152.times{|i|j=i/48%8;        #Iterate through all printable chars. j is line number.
  $><<"\\#{'/\\'[j/4]} /"[     #Print a char from "\/ /" if j/4 even or "\\ /" if odd. character changes depending which strand on top.
   (i+j)/4&1|(i-j)/2&2]+       #Print \ if (i+j)/4==0, / if (i-j)/2&2 >0, space if both false. As above if both true. 
   $/*(i%48/47)                #If on column 47, print a newline.
}

2

Perl, 132 131 113 bayt

@a=((0)x4,1..4);map{say+(map$a[7-$_]?$a[$_]*$r?'/':'\\':$a[$_]?'/':$",0..7)x6;push@a,shift@a;$_%4||($r=!$r)}0..23

Ungolfed:

use strict;
use warnings;
use feature 'say';

my @a = ((1) x 4, (0) x 4);  # print '\' if true
my @b = ((0) x 4, (1) x 4);  # print '/' if true
my $r = 0;                   # print '\' over '/' if true

for (0 .. 23) {
    say((map { $a[$_] ? ($b[$_] * $r ? '/' : '\\') : ($b[$_] ? '/' : ' ') } 0 .. 7) x 6);
    unshift(@a, pop(@a));    # circular shift to left
    push(@b, shift(@b));     # circular shift to right
    $r = !$r if !($_ % 4);   # change print priority
}

2

05AB1E , 37 bayt

CP-1252 kodlamasını kullanır .

24FNU48FXXN+XN-<)8%3›J" \// \/\"è?}¶?

Çevrimiçi deneyin!

açıklama

Jakube'nin pyth cevabında ustalıkla açıklanan mod-8 hilesini kullanır .

24F                                    # for N in [0 ... 23] do:
   NU                                  # save N in X
     48F                               # for N in [0 ... 48] do:
        XXN+XN-<)                      # push [X,X+N,X-N-1]
                 8%                    # mod each by 8
                   3›                  # compare with 3
                     J                 # join
                      " \// \/\"è?     # index into string and print
                                  }    # end inner loop
                                   ¶?  # print newline

2

Python, 245 236 234 233 230 216 212 198 195 bayt

Tamam, son (ve diğer) cevabımdan daha uzun ama yaklaşımla ilgili geri bildirimle ilgilenir.

for a in(40,4496,6200,5456,3240,1188,720,228)*3:print((`a%6561/2178`+`a%2178/729`+`a%729/243`+`a%243/81`+`a%81/27`+`a%27/9`+`a%9/3`+`a%3/1`)*6).replace('0','\\').replace('1','/').replace('2',' ')

Düzenle

-9 @ nedla2004 benden daha fazla topa sahip olduğu için

-2 lambda'yı halkanın dışına alarak ve 2 girinti boşluğunu kaybederek

-1 kullanarak in' '*3yerine in 0,1,2ben kullanımı yok çünküh zaten. bu sadece bir sayaç.

-3 Neden, neden, neden ikinci satır ve baskı arasında yeni satır ve 2 girinti bıraktım ??? Geç. Yarın tekrar ziyaret edecek.

-14 Aslında lambda'yı tamamen kaybedebilir ve baskı ifadesinden hemen sonra temel 3 kod çözücüyü ekleyebilir. Dağınık görünüyor ama sonuçta, bu kod golf :)

-4 Tamsayı listesi için değişken ayarlayan nokta yok. Sadece döngü için doğrudan ikinci kullanın.

-14 ve dış halkayı kullanmanın bir anlamı yok. Tamsayı demetini 3 ile çarpın (@ nedla2004'ten utanmadan çalındı ​​200'ün altına ulaşmak için :))

-3 \ = 0, / = 1 ve boşluk = 2 yaparak 3 kaydedildi. Bu, tamsayı listesini temel 3 numaralarından üçünün artık önde gelen 0'lara sahip olması nedeniyle kısaltır

Nasıl çalışır (ve çalışır)

Yalnızca 3 karakter kullanıldığından:

  1. l, "" = 0, "\" = 1 ve "/" = 2 olduğu varsayıldığında, temel 3 gösterimlerinin tamsayı eşdeğerleri olarak tekrarlanan 8 desenin bir listesidir.

  2. Lambda print ifadesinden sonraki ilk kod, tam sayıdan baz 3 dizeye kadar hafif bir dönüştürücüdür

  3. İlk döngü 3 kez döngü yapar ve ikincisi her satırı temel 3 karakter 6 ile çarpılarak ve /, \ veya boşluk ile değiştirir.

Yuvalanmış replace () yerine bir regex kullanabilirsiniz eminim ama şu anda denemek için çok yorgunum. Bu sadece bir deneydi ve önceki Python çabamdan daha uzun oldu ama sadece yaklaşımla ilgili herhangi bir yorum için yayınladım (ve daha önce hiç baz 3'te çalışmadım ve dönüştürücü çalışmaktan zevk aldım).


1
Yalnızca temel 3 dönüşümdeki ilk bölümü kaldırabilirsiniz.
nedla2004

Nedense bana daha önce sorunlara neden oldu ama sadece denedim ve şimdi çalışıyor. benden daha uyanık olduğunuz için çok teşekkürler. Cevabımı yeniden düzenleyeceğim (ve beni 9 bayt kurtardın :))
ElPedro

1
Temel 3 dönüşümünü yeniden yazdım, artık bir lambda değil, bir işlev yapmak zorunda kaldım, ancak tekrar lambda'ya dönüştürülebilir. İşlevi burada bulabilirsiniz .
nedla2004

Teşekkürler. Bence ikisinin bir kombinasyonu işe yarayabilir ama bu muhtemelen yarın akşam için bir iş :) Yorumlarınız için tekrar teşekkürler.
ElPedro

1
169'a indirdim, burada .
nedla2004

2

Ruby, 135 bayt

puts [3320,1212,720,2172,6520,4144,2920,3184].map{|e|(e.to_s(3).rjust(8,"0").gsub("0"," ").gsub("1","\\").gsub("2","/"))*6+"\n"}.join*3

Sayı dizisi, her satırın her bir bileşenine karşılık gelir, taban 3'e çevrilir: = 0, \= 1, /= 2, daha sonra ondalık sayıya dönüştürülür. Yine de gsub () çağrıları çok büyük.

Ve şimdi, @ ElPedro'nun cevabını gördüm. :-( Sadece tesadüf.


e.to_s(3).rjust(8,"0")("%8s"%e.to_s(3)); gsub("0"," ").gsub("1","\\")..gsub("2","/")tr("013"," \\/"); "\n"$/; .join*"". Ayrıca 4 ile dizideki sayıların tüm bölünmesi ve değiştirerek byte kaydedebilirsiniz eile (e*4).
Ürdün

Hata! Sanırım bu olmalı tr("021"," /\\").
Ürdün


2

PHP 157126 bayt

Yorumlarda @Titus listelerini alarak ... Rahatsız olmalıyım ki yakalamam gereken 1. noktayı kaçırdım, ama çoğu tasarrufun geldiği strtr () varlığını bilmiyordum - güzel çalışma Titus!

YENİ:

while($i<32)echo$b=strtr([3322,' 322 ','0220',' 223 ',2233,12013,3003,13021][$i++%8],['  ','\\','//','\\\\']),"$b$b$b$b$b\n";

ESKİ:

<?$a=[zzyy,' zyy ',syys,' yyz ',yyzz,xysxz,zssz,xzsyx];while($i<32){$b=$a[$i++%8];$b=str_replace([z,x,y,s],['\\\\','\\','//','  '],$b);echo"$b$b$b$b$b$b
";}

Tüm ters eğik çizgiler kaçmak gerektiğinden, onları farklı karakter olarak paketlemek ve çıktı için onları değiştirmek için oldukça fazla alan kazandırır ve sonra str_replace () çağırdıktan sonra mümkün olduğunca sık kullanmak mantıklıdır.


1
Kullanırsanız açık etiketi kaldırabilirsiniz -r. 30 bayt daha kaydetmek için bu beş adımı kullanın: ideone.com/wt4HGB 1) atamak yerine $a[...]doğrudan str_replaceparametre olarak kullanın. 2) strtryerine str_replace. 3) Harf yerine rakam kullanın. 4) Ödevi yankıyı ekleyin. 5) Atama $a, sadece kullan.
Titus

1

Python 2, 169 161 165 160 155 154 152

@ ElPedro'nun cevabına dayanarak, küçük iyileştirmelerle. Açıklamayı görmek için cevaplarına bakınız . Bu Python 2, yakınında parantez var gibi görünüyorprint .

İçin bir değişken kullanarak 8 bayt kaydedildi replace.Bu yalnızca dizeler için geçerlidir ve işlevini kullanmak daha uzun olur.

@ElPedro'nun l'e ihtiyaç duymadıklarını fark ederek 4 bayt kurtardı ve ben de ihtiyacım yoktu.

5 bayt çevrilmeden kaydedildi range(8)ve +=r'ye eklenmek yerine yeni basamağın sonuna r eklendi. Repl.it komutunu kullanarak deneyin

@ ElPedro'nun yeni değer listesini çalarak 5 bayt kaydedildi.

Arasındaki boşluğu kaldırarak 1 bayt kaydedildi inve (.

A değişkenini kaldırarak 2 bayt kaydedildi.

for x in(40,4496,6200,5456,3240,1188,720,228)*3:
 r=''
 for i in range(8):r=`x/3**i%3`+r
 print(r*6).replace('0','\\').replace('1','/').replace('2',' ')

Sen arasında boşluk kaldırarak 1 kaydedebilir inve (ilk yılında
ElPedro

Ayrıca, sayıların temel 3 listesindeki her karakteri temsil ettiği sırayı yeniden sıralayarak üç bayt kaybettim. Açıklama için cevabıma bakın. kopyalamaktan çekinmeyin.
Endişe duyduğum

İhtiyacınız yok a=3**i. Bir çift kaydetmek için sadece for i in range(8):r=x / 3 ** i% 3 +rkullanın. operatör önceliği gerisini halleder :)
ElPedro

Dize dönüştürme karakterlerinin nasıl sınırlandırılacağından emin değilim. Ayrıştırıcı onları benim son yorum kaldırıldı, bu yüzden sadece benim öneri kopyalamak ve yapıştırmak değil ya da kırmak :)
ElPedro

İyi bir nokta, anladım.
nedla2004

1

PHP, 184 bayt

<?$p=['1111////',' 11//// ','  ////  ',' ////11 ','////1111','1//  111','11    11','111  //1'];for($j=0;$j<3;$j++)for($i=0;$i<8;$i++)echo str_replace(1,'\\',str_repeat($p[$i],6))."\n";

Çıktı:

C:\PHP>php make-me-a-blanket.php
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\

0

Toplu, 152 bayt

@call:l
@call:l
:l
@for %%s in (\\\\//// " \\//// " "  ////  " " ////\\ " ////\\\\ "\//  \\\" "\\    \\" "\\\  //\")do @echo %%~s%%~s%%~s%%~s%%~s%%~s

Toplu işte dize işleme berbat, bu yüzden muhtemelen en iyi yaklaşım budur. Çağrı ve düşme, iç içe bir fordöngüden biraz daha kısadır . En azından ters eğik çizgilerimi alıntılamak zorunda değilim!


0

APL, 110 bayt

APL'de yeniyim, bu yüzden bu basit bir çözüm.

A←48⍴'\\\\////'⋄B←48⍴' \\//// '⋄C←48⍴'  ////  '⋄F←48⍴'\//  \\\'⋄G←48⍴'\\    \\'⋄24 48⍴A,B,C,(⊖B),(⊖A),F,G,⊖F  

İşte yaklaşımım: battaniyenin ilk 8 çizgisinden sonra, desenin kendini tekrarladığını unutmayın. Bu nedenle sadece ilk 8 satırı tanımlamam gerekiyor ve sonra 3 kez tekrarlayabilirim. Ayrıca her satırın ilk 8 karakterden sonra kendini tekrar ettiğini unutmayın. Bu nedenle, tek bir satır tanımlamak için sadece ilk 8 karakteri tanımlamam ve sonra 8 kez tekrarlamam gerekiyor.

İşte çözümsüz bir çözüm:

A←48⍴'\\\\////'⋄ ⍝ set A to a 48 element vector (48⍴) of repeated '\\\\////'s
B←48⍴' \\//// '⋄ ⍝ set B to a 48 element vector (48⍴) of repeated ' \\//// 's
C←48⍴'  ////  '⋄ ⍝ ...
D←48⍴' ////\\ '⋄ ⍝ Note that this is actually the reverse of vector B
E←48⍴'////\\\\'⋄ ⍝ Note that this is actually the reverse of vector A
F←48⍴'\//  \\\'⋄
G←48⍴'\\    \\'⋄
H←48⍴'\\\  //\'⋄ ⍝ Note that this is actually the reverse of vector F

24 48 ⍴ A,B,C,D,E,F,G,H ⍝ Make a 24 by 48 character matrix (24 48⍴) by concatenating A,B...H
                        ⍝ and repeating the string until the matrix is full

Yukarıda D'nin B'nin tersi olduğunu, E'nin A'nın tersi olduğunu ve H'nin F'nin tersi olduğunu belirttim. Gerçek kodumda, D, F veya H'yi tanımlayıp ters fonksiyonunu kullanarak bundan faydalanıyorum. :

24 48⍴A,B,C,(⊖B),(⊖A),F,G,⊖F


0

Ruby, 132 bayt

puts Zlib.inflate Base64.decode64 "eJzt0bENADAMAsGeKdggC/3+cyQRC+A2ipuT3RgJgHWGUjm6VXb2Vjn/3KpJ/qtIPlp1v+XSKZKPVk3y/x5+D6/3sAEUXQ+Q"

çok basit bir cevap.


0

Haskell, 96 bayt

f n=n`mod`8`div`4
putStr$unlines[["\\ //\\ \\/"!!(f(x-y)+2*f(x+y)+4*f y)|x<-[0..47]]|y<-[0..23]]
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.