Bana bir domino çiz


35

Meydan okuma

Giriş olarak 0-9 rakamı verildiğinde , iki yüzünde bu sayıda pip (nokta) bulunan bir domino ( çift ​​dokuzlu domino setinden ) çıkar. On olası yüzler şöyle görünür (borular ile ayrılır):

     |     |    o|    o|o   o|o   o|o o o|o o o|o o o|o o o
     |  o  |     |  o  |     |  o  |     |  o  |o   o|o o o
     |     |o    |o    |o   o|o   o|o o o|o o o|o o o|o o o

Veya ayrı hatlarda:

     
     
     
-----
     
  o  
     
-----
    o
     
o    
-----
    o
  o  
o    
-----
o   o
     
o   o
-----
o   o
  o  
o   o
-----
o o o
     
o o o
-----
o o o
  o  
o o o
-----
o o o
o   o
o o o
-----
o o o
o o o
o o o

Giriş biçimleri

Girdileri, ancak bunlarla sınırlı olmamak üzere, makul herhangi bir biçimde alabilirsiniz:

  • İki ayrı tam sayı, string veya singleton dizileri;
  • 0-99 arasında bir tam sayı;
  • İki tamsayı dizisi;
  • İki basamaklı bir dize.

Çıkış biçimleri

  • İki yüz yatay şekilde hizalanmış olabilir;
    o|o   o
     |  o  
o    |o   o
  • Veya şu şekilde tire ile ayrılarak dikey olarak hizalanabilirler:
    o
     
o    
-----
o   o
  o  
o   o
  • İsterseniz domino etrafında bir sınır çıkarabilirsiniz.
  • Ayrıca, bir çizgi listesi, iki yüzün bir listesini veya bunların bir bileşimini vermeyi de seçebilirsiniz.
  • Pipler için boşluk olmayan herhangi bir karakter kullanabilirsiniz (kullandım o).
  • Eğer gerçekten isterseniz, bir dizi çıkarırken 0boşluklar ve 1pipler için veya False/ True(veya dilinizin eşdeğeri) için kullanabilirsiniz.
  • Sütunlar arasındaki boşlukları kaldırabilirsiniz; bu 7, 7 için geçerli bir çıktıdır:
ooo|ooo
 o | o 
ooo|ooo
  • Yüzlerin herhangi biri 90 derece döndürülebilir. Bu aynı zamanda 7, 7 için geçerli bir çıktıdır:
o   o|o o o
o o o|  o  
o   o|o o o
  • Çıktının ana kısmı hala diğer kısıtlamalara uyduğu sürece istediğiniz kadar küçük / küçük ön / arka boşluk olabilir.
  • Her yüz, satırlar boş olsa bile 3 satır uzunluğunda olmalıdır. 0, 1 için bunu çıkardın:
-----

  o

Ama olabilir çıktı bu:




-----

  o

Benzer şekilde, iki satırlık listenin çıktısını alıyorsanız, yapabilirdiniz [["", "", ""], ["", " o", ""]], ancak yapamazsınız [[""], [" o "]].

puanlama

Bu , yani her dilde bayt cinsinden en kısa kod kazanır.


Yani girdi için [2, 1]çıktı alabilir [[[0,0,1],[0,0,0],[1,0,0]],[[0,0,0],[0,1,0],[0,0,0]]]miyim?
Dennis,

@Dennis Doğru.
ETHProductions

2
Yüzler arasındaki ayırıcının çizgi olması gerekiyor mu, yoksa başka bir tutarlı değer olabilir mi?
Jo King,

@JoKing Kullanmakta olduğunuz karakterlerden başka herhangi bir tutarlı karakteri kullanabileceğinizi söyleyeceğim.
ETHProductions,

[0,5,21,29,31]hepsi burada önemli sayılar dostlarım.
Magic Octopus Urn

Yanıtlar:


14

Python 2 , 101 97 92 68 64 bayt

lambda*a:[[[n>3,n>5,n>1],[n>7,n%2,n>7],[n>1,n>5,n>3]]for n in a]

Çevrimiçi deneyin!

Kredi


@ Mr.Xcoder Tekrar güncellendi.
Neil

1
Biçimlendirme isteğe bağlıdır. Bir çift matris döndürmek en az 22 byte kazandırır.
Dennis,

1
Biçimlendirme olmadan 68 bayt ( Python'da eşit olduğuna 0ve Falseeşit olduğuna dikkat edin , bu nedenle tamam olmalıdır).
Jonathan Allan,

@JonathanAllan Çok akıllıca, güncellendi.
Neil

64 bayt. Bir lambda yapmak zorunda kalırsanız, bir liste anlama muhtemelen daha kısadır.
Tamamen insan

12

C (gcc) , 252 242 269 262 241 235 220 bayt

Python'daki soketler için yığın taşması üzerindeydim, bu açıldığında neden olmasın? ilk kod golf, bu yüzden tamamen% 100 kurallara uyup uymadığımdan emin değilim (ve eğer değilse ve birisi meşhur çerezimi çalmak ve düzeltmek istiyorsa, öyle olsun). 'O' ve '' ile, 255 245 272 265 244 238 228 bayt. +48'i * 79 + 32 ile değiştirin.

#define Q(P,R)(R>>P&1)+48
char a[11];i=0;f(char*c){char b=c[0];a[3]=a[7]='\n';a[5]=Q(0,b);a[1]=a[9]=Q(3,b);a[2]=a[8]=Q(2,b)|a[1];a[0]=a[10]=Q(1,b)|a[2];a[4]=a[6]=a[1]|Q(2,b)&Q(1,b);puts(a);if(i++<1){puts("---");f(c+1);}}

Çevrimiçi deneyin!

Nasıl çalışır:
Bir bit kaydırma ve bit yönünde kullanıyorum ve bir noktanın net mi yoksa pip mi olması gerektiğini bulmak için 0 veya 1 değerini doğru ASCII değerine kaydırın. 4 ve 5 ile uğraşıyor, bu yüzden bazı sabitleme ihtiyaçları vardı. aslında birkaç bayt eklendi. Bir maskeyi kaldırarak ve sadece 1 (doh) kullanarak birkaç bayt kaldırabilirdi

Bay Xcoder'a 7 # bayt için çok fazla teşekkür ederiz #define
Değişiklikleri kaldırarak : memset -21 bayt kaldı. bit mantığını 6, 4, 2 için sırasıyla 8 | 4 & 2, 8 | 4, 8 | 4 | 2 olarak yeniden düzenledi. -6 bayt. printf yerine, daha kısa olan boşlukları kullanarak fazladan yeni satır kaldırıldı. dizi 11 'e kısaltıldı, fazladan ödev kaldırıldı. -15 bayt. Şimdi yapabileceğimin en iyisi olduğunu düşünüyorum.


7
PPCG'ye Hoşgeldiniz!
Shaggy

Merhaba, PPCG'ye hoş geldiniz! Kodunuzu biraz daha kısaltabilirsiniz, 245 bayt
Bay Xcoder

'\n'tarafından değiştirilebilir 10. (Çünkü C'de char veri tipleri ayrıca tamsayı veri tipleridir) Bazıları charmuhtemelen tarafından değiştirilebilir int. (veya tamamen yok
sayın

Burada 184 bayta kadar ama bu hala mevcut c golfden daha fazlası, bu yüzden.
Andrew Baumher


10

Jöle , 20 bayt

“¤o.ƤẸʠṚ’B¬s5ŒBị@s€3

Çevrimiçi deneyin!

Alternatif versiyon, orijinal çıktı, 33 32 31 bayt

“¤o.ƤẸʠṚ’ṃ⁾ os5ŒBị@s€3K€€Zj€”|Y

1 byte kapalı golf için @ user202729'a teşekkür ederiz!

Çevrimiçi deneyin!

Nasıl çalışır

İlk önce “¤o.ƤẸʠṚ’- 250 numaralı temeldeki bir tamsayı değişmezi - dönüş değerini 1086123479729183 olarak ayarlar .

Ardından, dönüş değerini ikili değere dönüştürür ve her basamağın mantıksal NOT'unu alır, diziyi verir

00001001000010110100101011110011101111101111100000

Daha sonra, s5ŒBuzunlukta parçalar halinde bu dizi böler 5 daha sonra, sıçrar dönüm her yığın ABCDE içine abcdedcba , sonuçta

000010000 001000100 001010100 101000101 101010101

111000111 111010111 111101111 111111111 000000000

Şimdi, ị@alır j inci ve k inci bu dizinin, öğeyi j, k programın ilk argümandır. İndekslemenin 1 tabanlı ve modüler olduğuna dikkat edin, böylece sıfırıncı öğe de onuncudur.

Son olarak, s€3dokuz uzunluktaki her bir parçayı üç uzunluktaki üç topluluğa ayırır.


1
Hala bana sihir gibi gözüküyor, ama bir açıklamadaki girişimi takdir ediyorum. Sadece düşük bir PHP web geliştiricisi olduğum için muhtemelen benim hatam olduğunu kabul edeceğim
ArtisticPhoenix

3Kullanıyorsa 0değil, pip için 1diğerleri gibi.
Jonathan Allan,

“¤o.ƤẸʠṚ’çalışmalı.
Jonathan Allan,

@JonathanAllan Teşekkürler! Bunun nasıl olduğuna emin değilim ...
Dennis,

8

Jöle , 13 bayt

⁽½ÑD<;ḂŒBs3µ€

Çevrimiçi deneyin!

Birleştiren Dennis'in 'kullanma fikri ŒBde (sıçrama) Bu yanıt ve Xcali s gözlem' Bu yanıt 13 bayt alır.


Jöle , 28 bayt

(güzel baskı ile)

Sadece şimdi Jelly string değişmezinin otomatik olarak sonlandırıldığını biliyorum.

⁽½ÑD<;ḂŒBị⁾o Ks6Yµ€j“¶-----¶

Çevrimiçi deneyin!


Anlaşılan yaklaşımım ⁽½ÑDEriktheOutgolfer cevabı daha az ByteCount için iletkenler “¤¦¢¬‘ burada
user202729

İşlevleri yeniden düzenlemek en iyisi olmaz mıydı, böylece 13 byte (Dennis'i aşan) üstte olacak ve daha kolay görülebilecek mi?
Zacharı

@ Zacharý Geçici çözüm. Daha sonra tamir edecek.
user202729

6

PHP 155 , 150 bayt

function d($a){foreach($a as$n){$o="---";for($i=0;$x=2**$i,$i<9;++$i)$o.=([0,16,68,84,325,341,365,381,495,511])[$n]&$x?0:' ';echo chunk_split($o,3);}}

Girdi olarak bir tamsayı dizisi alır. Test için:

d([1,2]);

echo "=========\n";

d([0,1,2,3,4,5,6,7,8,9]);

Çıkış biçimi:

---

 0 

---
  0

0  

Burada canlı canlı kontrol edin

Çözümüm

Benim çözümüm için bit sayılardan oluşan bir matris kullandım (2'nin gücü). Bu şekilde görselleştirilebilir:

 1  |  2  |  4
 8  | 16  | 32
 64 | 128 | 256

Ve sonra, her bir domino pipi için bit konumlarından oluşan ve sayı indeksi ile ilişkilendirilen bir depolama dizisi:

[0,16,68,84,325,341,365,381,495,511]

Yani sadece netleştirmek için:

  • örnek 0: dizin 0veya değer 0, daima yanlış olan boş domino olur.
  • örnek 1: dizin 1veya değer 16, bir numaralı domino ve merkezdeki matristeki olur 16.
  • örnek 2: endeks 2veya değer 68iki numaralı domino olacaktır ve matristeki sağ üst 4ve sol alt 64 veya4|64
  • örnek 3: dizin 5veya değer 341, beş domino sayısı ve bu değerin matrisinde1|4|16|64|256
  • örnek 4: endeks 9veya değer 511dokuz sayı domino olacaktır ve matristeki tüm bitlerin birleşimidir.

Bu işlemlerden sonra matris içinde 9 pozisyonlar için döngü ve ayar oldukça basit bir mesele $xiçin 2için iktidar arasında$i

for($i=0;$x=2**$i,$i<9;++$i)

Sonra biraz bitirdik Ve &bu noktalardan geçerken. Dolayısıyla, örnekler için yukarıdaki 2. örneği kullanacağım ve xbunun yerine görsel netlik için boşluk kullanacağım :

  • 68 & 1 ? 0 : 'x'sonuçlanan yineleme 1'x'
  • 68 & 2 ? 0 : 'x'sonuçlanan yineleme 2'x'
  • 68 & 4 ? 0 : 'x'sonuçlanan yineleme 30
  • 68 & 8 ? 0 : 'x'sonuçlanan yineleme 4'x'
  • 68 & 16 ? 0 : 'x'sonuçlanan yineleme 5'x'
  • 68 & 32 ? 0 : 'x'sonuçlanan yineleme 6'x'
  • yineleme 7, 68 & 64 ? 0 : 'x'sonuçlanan0
  • 68 & 128 ? 0 : 'x'sonuçlanan yineleme 8'x'
  • yineleme 9, 68 & 256 ? 0 : 'x'sonuçlanan'x'

Döngü tamamlandığında bu dizgeyle döneriz "xx0xxx0xx".

Sonra kenarlık eklemek "---xx0xxx0xx"kendisine (Ben aslında sınırın ama neyse başlamak) .

Ve nihayet biz 3 için chunk_split () için:

---
xx0
xxx
0xx

Bana ne düşündüğünü bildirmekten çekinmeyin.



@Daniel - Teşekkürler 5 bayt kurtardı! Bunları eklediklerinin farkında değildim, her zaman kullanmaya çalıştım ^ama bit bit XOR ... lol
ArtisticPhoenix

Fazladan bir sınır yazmanıza izin verildiğini sanmıyorum.
12Me21

bana OP’deki uzaktan bile nereden bahsettiğini göster.
SanatsalPhoenix

Sanırım bu işlem daha kısa sürecek $argv. PHP'de genel gider işlevi genellikle 13 bayttır.
Titus

6

Perl 5 , 107 76 70 + 1 ( -a) = 70 bayt

Perl 5 , 70 bayt

$,="
---
";say map{$_='351
7 7
153'=~s/\d/$_>$&||0/ger=~s/ /$_%2/er}<>

Çevrimiçi deneyin!

Boşluk için 0, pipetler için 1 kullanır. Oldukça basit bir yöntem: rakam yükseldikçe, bir pip "açık" olduğunda, ortadakiler dışında asla "sönme" olmadığını gözlemleyin. Orta konumda, tüm garip sayılar için açıktır. Bu nedenle, her bir pozisyon için, rakamın kapalı olduğu son rakamdan büyük olup olmadığını kontrol etmek basit bir meseledir. ||0Koşul yanlışsa zaman çıkış oluşturur. Perl'de false, undefnull çıktısıdır.


4

JavaScript (ES6), 79 78 bayt

@ETHproductions sayesinde 1 bayt kaydedildi

Körleme sözdiziminde girdi alır (a)(b)ve dikey bir ASCII domino çıkarır.

a=>b=>(g=n=>`351
707
153`.replace(/./g,d=>' o'[(+d?n>d:n)&1]))(a)+`
---
`+g(b)

gösteri


Yatay versiyon, 80 79 bayt

@ETHproductions sayesinde 1 bayt kaydedildi

Girdiyi 2 tam sayı dizisi olarak alır ve yatay bir ASCII domino çıkarır.

a=>`240|351
686|797
042|153`.replace(/\d/g,d=>' o'[(d<8?(x=a[d&1])>(d|1):x)&1])

gösteri


Güzel, sahip olduğum şeye çok benzer. Ya n>d|0da bir bayt kaydedin ya da(+d?n>d:n)&1
ETHproductions



2

Javascript (ES6), 87 bayt

a=>b=>[(s=n=>[[n>3,n>5,n>1],[n>7,n%2,n>7],[n>1,n>5,n>3]].map(c=>c.map(b=>+b)))(a),s(b)]

f=a=>b=>[(s=n=>[[n>3,n>5,n>1],[n>7,n%2,n>7],[n>1,n>5,n>3]].map(c=>c.map(b=>+b)))(a),s(b)]
<div oninput="o.innerText=JSON.stringify(f(a.value)(b.value))"><input id=a type=number min=1 max=9 value=1><input id=b type=number min=1 max=9 value=1><pre id=o>


Nice DOMinoes ...
Esolanging Meyve 24:18

2

Haskell - 88 karakter

map$zipWith(zipWith($))[[(>4),(>5),(>1)],[(>7),odd,(>7)],[(>1),(>5),(>3)]].repeat.repeat

Yüzleri belirten iki sayının listesini alır, bool listesinin bir listesini döndürür. O kadar kısa değil ama çözümü ilginç buluyorum.


Sadece kullanabilirsiniz mapyerine repeatve zipWith: map$(<$>[[(>4),(>5),(>1)],[(>7),odd,(>7)],[(>1),(>5),(>3)]]).map.flip($)çevrimiçi deneyin!
Laikoni

Pointfree özelliği iki byte'tan daha fazla tasarruf sağlar: Çevrimiçi deneyin!
Laikoni

2

Pip , 32 27 24 21 bayt

@DLosc sayesinde -3 bayt

FcgP[Yc>_M3517c%2RVy]

Çevrimiçi deneyin!

Açıklama:

F                      For each
 c                       character $c
  g                      in the list of inputs:
   P                     Print
    [               ]      an array consisting of
                             an array of bits representing whether
      c>                       $c is greater than
        _M                       each of
          3517                     3, 5, 1, and 7
     Y                       (call this bit array $y),
              c%2            $c mod 2,
                 RV          and the reverse
                   y           of $y.

1
Pip ödülünü kazandığınız için tebrikler! Şimdi ödül dönemi sona erdi, size şunu söyleyebilirim: 3517bir liste yerine bir skalaya eşleyerek 3 bayttan tasarruf edin [3 5o7]. ;)
DLosc

1

> <> , 57 + 3 = 60 bayt

>{:3)$:5)$:1)$:7)$:2%$\ao \
\?%cl999)3$)5:$)1:$)7:/nnn<rp

Çevrimiçi Deneyin . Noktalar için 1s, boşluk için 0s ve aşağıdaki gibi ayırıcılar için 9s ile dikey bir domino oluşturur:

001
000
100
999
111
111
111

Teknik olarak bu, girilen 12 değere kadar uzatılabilir.

Eski versiyon:

> <> , 76 + 3 = 79 bayt

>{:3)$:5)$:1)$a$:7)$:2%$:7)\&?o~?!n\
\?(*a3la"---"a)3$)5:$)1:$a$/$&:)9::<r~p

Çevrimiçi Deneyin . Noktalar için 1s ve boşluklar için beyazlar için 0s ile dikey bir domino olarak çıktılar:

001
000
100
---
111
111
111

1

Kömür , 46 44 43 39 bayt

EE²℅§@APQTUVW^_NE⪪E⁹§ o÷ιX²↔⁻⁴λ³⪫λ M⁵↑⁵

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı bir versiyonudur. Açıklama:

EE²℅§@APQTUVW^_N

İki tamsayı okuyun ve bunları arama tablosunda eşleyin. Sonra sonuç üzerinde harita. (Bu sonucu etkili bir şekilde geçici olarak yakalar.)

  E⁹                Loop `l` (!) from 0 to 8
            ⁻⁴λ     Subtract from 4
           ↔        Absolute value
         X²         Power of 2
       ÷ι           Divide into the looked-up value `i`
    § o             Convert to space or o
 ⪪             ³    Split into (3) groups of 3
E                   Map over each group
                ⪫λ  Join the 3 characters with spaces

Sonuçlar daha sonra örtülü olarak, her bir yüz arasında ekstra bir boş satır olacak şekilde sonuçlar satır içine alındığından ayrı satırlara yazdırılır.

M⁵↑⁵

Yukarı kaydırın ve ayırma çizgisini yüzlerin arasına çizin.

Önceki 43 bayt yatay versiyon:

↶P³M⁷←FE²℅§@APQTUVW^_NF⁹«F¬﹪κ³⸿⸿§ o÷ιX²↔⁻⁴κ

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı bir versiyonudur. Açıklama:

Dikey çalışın.

P³

Ayırma çizgisini yazdırın.

M⁷←

İlk yüzün başlangıcına yerleştirin.

FE²℅§@APQTUVW^_N

İki tamsayı okuyun ve bunları arama tablosunda eşleyin.

F⁹«

9 os'ye kadar çıktı hazırlayın .

F¬﹪κ³⸿⸿

Fakat her üç osaniyede bir yeni sütun başlat .

§ o÷ιX²↔⁻⁴κ

ASCII kodunun alt 5 bitini ikiliye dönüştürün ve ardından kalan 4 osn için çıkışı yansıtın.


Çıkış formatı oldukça liberaldir ve birkaç byte tasarruf etmelidir.
Dennis,

1
Bu büyücülük nedir
ArtisticPhoenix

@Dennis Aslında orijinal çıktı formatı en kullanışlı olanıdır, çünkü otomatik olarak bölme çizgisini çizmem için bana yer açar.
Neil

Tanrım, iki tane Neil var.
Zacharý

2
@ Zacharý Aslında, kullanıcı sayfasına göre isimleri Neil olan insanları da eklerseniz, sekiz ya da 40 tane var ...
Neil

1

Jöle , 16 bayt

>⁽¤xb8¤;ḂŒḄs3
Ç€

Çevrimiçi deneyin!

Kullanılan Neil'in stratejisini ve değerlerini oluşturmak için baz dekompresyon; bir ikili dizi olarak çıktılar. Giriş olarak bir liste alır.

Açıklama:

Ç€
 € for €ach input,
Ç  execute the previous line.

>⁽¤xb8¤;ḂŒḄs3
 ⁽¤xb8¤       the array [3, 5, 1, 7]
>             1 if the input is greater than each element, 0 otherwise
       ;Ḃ     append input % 2
         ŒḄ   bounce array
           s3 split into chunks of 3

0

APL + WIN, 49 47 bayt

4⌽'|',⌽⍉6 3⍴,⍉(9⍴2)⊤(+\∊0 241 52 24 114,¨16)[⎕]

Adam'ın yorumuna göre düzenlenmiş, teşekkür, dizin orijinli sıfır ile çalıştırmak için.

Her yüz için bir tamsayı vektörü olarak ekran girişi ister.

Çıktı şu şekildedir:

1 1 1 | 0 0 1    0 0 0 | 1 0 1
0 1 0 | 0 1 0    0 0 0 | 0 1 0
1 1 1 | 1 0 0    0 0 0 | 1 0 1

girişleri için 7 3ve0 5

Açıklama:

(+\∊0 241 52 24 114,¨16) create a vector of integers whose binaries
                         represent the dots on the domino faces

[1+⎕] take input integers as indices to select from above vector

⍉6 3⍴,⍉(9⍴2)⊤ convert selected integers to a 9x2 binary matrix and reshape
              to match the orientation of the domino faces

4⌽'|',⌽ rotate, concatenate centre line markers and rotate again to centre 

Neden ⎕IO←0kendini kurtarmak için kullanmıyorsun 1+?
Adám

@Adam Neden gerçekten değil - tembel;)
Graham

0

Python 2,121 bayt

lambda x,y,d="001155777702020202570044557777":[("%03d"%int(bin(int(o))[2:]),"---")[o=="3"]for o in d[x::10]+"3"+d[y::10]]

Çevrimiçi deneyin!

Geri dönüp kuralları tekrar okuduktan sonra bir lambda kullanarak 121'e düşürülür. Şimdi satırların bir listesini çıkarır.

Güzel formatlanmış çıktı ile önceki sürüm:

Python 2 , 156 153 147 141 bayt

x,y=input()
d="001155777702020202570044557777"
a=["%03d"%int(bin(int(o))[2:])for o in d[x::10]+d[y::10]]
for x in a[:3]+["---"]+a[3:]:print x

Çevrimiçi deneyin!

-3 @NieDzejkob sayesinde

Girdiyi 2 tamsayı olarak alır ve dikey formatta 0 = boşluk ve 1 = nokta ile çıktı alır.



0

Pyt , 220 154 bayt

İkinci deneme (154 bayt)

46281ᴇ8264áĐ9ř3%¬Đ¬2⁵*⇹1ᴇ*+03Ș←Đ3Ș≥Đ6²⁺3**⇹¬2⁵*+⇹9ř5=⇹2%*9²2-*+⇹9ř9<*Ž⇹ŕ⇹9ř3%¬Đ¬2⁵*⇹1ᴇ*+03Ș←Đ3Ș≥Đ6²⁺3**⇹¬2⁵*+⇹9ř5=⇹2%*9²2-*+⇹9ř9<*Ž⇹ŕ5⑴9△*Ƈǰ⇹Ƈǰ64ȘƇǰ6↔ŕ↔ŕ↔

Açıklama:

46281ᴇ8264áĐ                                    Pattern matching for every cell but the middle
9ř3%¬Đ¬2⁵*⇹1ᴇ*+03Ș                              Non-pip characters
←Đ3Ș≥Đ6²⁺3**⇹¬2⁵*+⇹9ř5=⇹2%*9²2-*+⇹9ř9<*Ž⇹ŕ⇹     Make top cell
9ř3%¬Đ¬2⁵*⇹1ᴇ*+03Ș                              Non-pip characters
←Đ3Ș≥Đ6²⁺3**⇹¬2⁵*+⇹9ř5=⇹2%*9²2-*+⇹9ř9<*Ž⇹ŕ      Make bottom cell
5⑴9△*Ƈǰ⇹Ƈǰ64ȘƇǰ6↔ŕ↔ŕ↔                          Make boundary and combine



İlk deneme (220 bayt):

2`↔←Đ4≥Đ6²⁺3**⇹¬5«+2⁵⇹3ȘĐ6≥Đ6²⁺3**⇹¬5«+2⁵⇹3ȘĐ2≥Đ6²⁺3**⇹¬5«+1ᴇ⇹3ȘĐ8≥Đ6²⁺3**⇹¬5«+2⁵⇹3ȘĐ2%Đ6²⁺3**⇹¬5«+2⁵⇹3ȘĐ8≥Đ6²⁺3**⇹¬5«+1ᴇ⇹3ȘĐ2≥Đ6²⁺3**⇹¬5«+2⁵⇹3ȘĐ6≥Đ6²⁺3**⇹¬5«+2⁵⇹3Ș4≥Đ6²⁺3**⇹¬5«+1ᴇ9△ĐĐĐĐ1ᴇ↔⁻łŕ↔ŕŕŕŕŕŕáƇǰ

Açıklama:

2                           Push 2 (this is how many 'cells' to make)
`     ... ł                 While the top of the stack is not zero, loop
↔                           Flip the stack (useless at the beginning, undoes the flip at the end of the loop)
←Đ4≥Đ6²⁺3**⇹¬5«+            Set top-left pip
2⁵⇹3Ș                       Space
Đ6≥Đ6²⁺3**⇹¬5«+             Set top-middle pip
2⁵⇹3Ș                       Space
Đ2≥Đ6²⁺3**⇹¬5«+             Set top-right pip
1ᴇ⇹3Ș                       New line
Đ8≥Đ6²⁺3**⇹¬5«+             Set middle-left pip
2⁵⇹3Ș                       Space
Đ2%Đ6²⁺3**⇹¬5«+             Set center pip
2⁵⇹3Ș                       Space
Đ8≥Đ6²⁺3**⇹¬5«+             Set middle-right pip
1ᴇ⇹3Ș                       New line
Đ2≥Đ6²⁺3**⇹¬5«+             Set bottom-left pip
2⁵⇹3Ș                       Space
Đ6≥Đ6²⁺3**⇹¬5«+             Set bottom-middle pip
2⁵⇹3Ș                       Space
4≥Đ6²⁺3**⇹¬5«+              Set bottom-right pip
1ᴇ                          New line
9△ĐĐĐĐ                      Add 5 dashes
1ᴇ                          New line
↔⁻ł                         Decrement counter (if >0, loop; otherwise, exit loop)
ŕ↔ŕŕŕŕŕŕ                    Remove all unnecessary items on the stack
áƇǰ                         Push stack to an array, get characters at unicode codepoints given by values in the array, join characters with empty string


Çevrimiçi deneyin!


0

05AB1E , 34 bayt

•ΩõIº•R2ô¹2÷è¹È-bDg5s-ú.∞3ô»TR„ o‡

Çevrimiçi deneyin!


Bu zordu çünkü 05AB1E kötü bir dolguya sahipti.


Temel açıklama:

  • Burada 2, 4, 6 ve 8 olan 4 önemli desen vardır.
  • 3,5,7 ve 9 diğer kalıplar artı 1'dir.
  • Simetri nedeniyle 1 anlamlı değildir, eğer giriş eşitse, orta biti değiştirmek için 1'i çıkarın.
  • LSB'nin değiştirilmesi, orta bitin yansıtma nedeniyle çevrilmesini sağlar.

0

SmileBASIC, 92 69 bayt

INPUT N,M
DEF Q?N>3;N>5;N>1?N>7;1AND N;N>7?N>1;N>5;N>3
END
Q?777N=M
Q

Örnek:

? 7,2
111
010
111
777
001
000
100

Kuralların yeterince katı olmadığında olan budur.


0

YANLIŞ, 116 80 78 70 69 66 63 61 59 58 bayt

[$3[>_$.\$]$p:!5p;!1p;!"
"7p;!%1&.."
"..."
"]$s:!"---
"s;!

hala bu konuda çalışıyor ...


0

Çip ,142 135 bayt

! CvDvB
>v-]-x.
|Z-]-]e
|Z]xe|
|ZR(-'
|Zx.AD
|Zxx]x.
|Zx^-]e
|Z<,(-.
|Zx]xe|
|Zx-]-]e
|Zx-]-x'
|Z<C^D^B
|>x~s
|Zx.
|Zx<
|Zxb
|Z+^~f
`zd

Çevrimiçi deneyin!

Giriş bir basamak dizesidir. Pipleri sıfır kullanır. Bir sayı için pip çizer, bir sonraki giriş baytını okur. Bir sonraki bayt yoksa, sonlandırın, bölücüyü çizin ve başlayın.

Her Z(veya z) çıkışın bir karakterine karşılık gelir, yukarıdan aşağıya doğru ateşlenecek şekilde konumlandırılırlar. Harfle A, B, Cve Dgirdinin düşük dört bite karşılık gelir (biz bakmak, hepsi bu yüzden "34" == "CD" == "st" ...). Küçük b, d, e, fçıkış çeşitli bit karşılık gelmektedir.

Sonsuz uzunlukta domino da yapabilir; 0123456789giriş olarak vermeyi deneyin .


0

PHP, 116 bayt

while($i<6)echo strtr(sprintf("%03b",[_011557777,_202020267,_044557777][$i/2][$argv[$i%2+1]]),10,"o "),"|
"[$i++%2];

PHP 5.5 veya üstü gerektirir. Çevrimiçi olarak çalıştırın -nrveya deneyin .


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.