Gambarkan aku domino

35

Tantangan

Diberikan dua digit 0-9 sebagai input, output domino (dari set domino double-sembilan ) dengan jumlah pips (titik) pada kedua sisi. Sepuluh wajah yang mungkin terlihat seperti ini (dipisahkan oleh pipa):

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

Atau di jalur terpisah:

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

Format input

Anda dapat mengambil input dalam format apa pun yang masuk akal, termasuk tetapi tidak terbatas pada:

  • Dua bilangan bulat, string, atau array tunggal yang terpisah;
  • Integer tunggal dari 0-99;
  • Array dua bilangan bulat;
  • Untaian dua digit.

Format output

  • Kedua wajah mungkin sejajar secara horizontal, dipisahkan oleh pipa seperti:
    o|o   o
     |  o  
o    |o   o
  • Atau mereka dapat disejajarkan secara vertikal, dipisahkan oleh tanda hubung seperti:
    o
     
o    
-----
o   o
  o  
o   o
  • Anda dapat menampilkan perbatasan di sekitar domino jika Anda mau.
  • Anda juga dapat memilih untuk menampilkan daftar garis, daftar dua wajah, atau kombinasi dari semuanya.
  • Anda dapat menggunakan karakter non-spasi putih untuk pips (saya menggunakan o).
  • Jika Anda benar-benar menginginkannya, Anda dapat menggunakan 0untuk spasi putih dan 1untuk pips, atau False/ True(atau bahasa Anda yang setara) jika menghasilkan array.
  • Anda dapat menghapus spasi putih di antara kolom; ini adalah output yang valid untuk 7, 7:
ooo|ooo
 o | o 
ooo|ooo
  • Salah satu wajah dapat diputar 90 derajat. Ini juga merupakan output yang valid untuk 7, 7:
o   o|o o o
o o o|  o  
o   o|o o o
  • Anda mungkin memiliki spasi putih terdepan / trailing sebanyak yang Anda suka, selama bagian utama dari output masih sesuai dengan kendala lainnya.
  • Setiap wajah harus memiliki 3 garis, walaupun garisnya kosong. Untuk 0, 1 Anda tidak dapat menampilkan ini:
-----

  o

Tapi Anda bisa menampilkan ini:




-----

  o

Demikian pula, jika Anda mengeluarkan daftar dua daftar garis, Anda bisa melakukannya [["", "", ""], ["", " o", ""]], tetapi tidak [[""], [" o "]].

Mencetak gol

Ini adalah , jadi kode terpendek dalam byte di setiap bahasa menang.

Produksi ETH
sumber
Jadi, untuk input [2, 1], saya bisa output [[[0,0,1],[0,0,0],[1,0,0]],[[0,0,0],[0,1,0],[0,0,0]]]?
Dennis
@Dennis Benar.
ETHproductions
2
Apakah pemisah antara wajah harus garis putus-putus, atau dapatkah itu merupakan nilai yang konsisten lainnya?
Jo King
@JoKing Saya akan mengatakan Anda dapat menggunakan karakter yang konsisten selain yang sudah Anda gunakan.
ETHproductions
[0,5,21,29,31]semua angka penting di sini teman saya.
Magic Gurita Guci

Jawaban:

14

Python 2 , 101 97 92 68 64 byte

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

Cobalah online!

Kredit

Neil
sumber
@ Mr.Xcoder Diperbarui lagi.
Neil
1
Pemformatan adalah opsional. Mengembalikan sepasang matriks menghemat setidaknya 22 byte.
Dennis
1
68 byte tanpa format (catat itu 0dan Falsesama dengan Python, jadi harus OK).
Jonathan Allan
@ JonathanAllan Sangat pintar, diperbarui.
Neil
64 byte Jika Anda harus membuat lambda, pemahaman daftar mungkin lebih pendek.
Sepenuhnya manusiawi
12

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

Saya berada di stack overflow untuk soket di python, ketika ini muncul, berkata mengapa tidak? golf kode pertama, jadi saya tidak sepenuhnya yakin apakah saya mengikuti aturan 100% (dan jika tidak dan seseorang ingin mencuri cookie pepatah saya dan memperbaikinya, jadi itu). Dengan 'o' dan '', 255 245 272 265 244 238 228 byte. ganti +48 dengan * 79 + 32.

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

Cobalah online!

Cara kerjanya:
Saya menggunakan sedikit pergeseran dan bitwise dan untuk menemukan apakah tempat harus jelas atau pip, kemudian mengimbangi 0 atau 1 ke nilai ASCII yang benar. itu kacau pada 4 dan 5, jadi mereka perlu diperbaiki. sebenarnya ditambahkan beberapa byte. dapat menghapus beberapa byte dengan menghapus topeng dan hanya menggunakan 1 (doh)

Terima kasih khusus kepada Tn. Xcoder untuk 7 byte lebih sedikit dengan menghapus kelebihan #define
Perubahan: menghapus memset -21 byte. redid logika bit untuk 6, 4, 2 untuk bergantung pada 8 | 4 & 2, 8 | 4, 8 | 4 | 2, masing-masing. -6 byte. menghapus baris baru ekstra dengan menggunakan put, bukan printf, yang juga lebih pendek. memperpendek array menjadi 11, menghapus tugas tambahan. -15 byte. SEKARANG saya pikir itu yang terbaik yang bisa saya lakukan.

Andrew Baumher
sumber
7
Selamat datang di PPCG!
Shaggy
Hai, selamat datang di PPCG! Anda dapat mempersingkat kode Anda sedikit lebih jauh, 245 byte
Tn. Xcoder
'\n'dapat digantikan oleh 10. (karena dalam C, tipe data char juga tipe data integer) Beberapa charmungkin dapat diganti dengan int. (atau hilangkan seluruhnya)
user202729
Turun ke 184 byte di sini tapi itu masih lebih dari c golf saat ini, jadi.
Andrew Baumher
173
Andrew Baumher
10

Jelly , 20 byte

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

Cobalah online!

Versi alternatif, keluaran asli, 33 32 31 byte

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

Terima kasih kepada @ user202729 untuk bermain golf 1 byte!

Cobalah online!

Bagaimana itu bekerja

Pertama, “¤o.ƤẸʠṚ’- integer literal dalam basis bijective 250 - menetapkan nilai kembali ke 1086123479729183 .

Kemudian, ubah nilai kembali ke biner dan ambil BUKAN logis dari setiap digit, menghasilkan array

00001001000010110100101011110011101111101111100000

Selanjutnya, s5ŒBbagi array menjadi potongan-potongan dengan panjang 5 , lalu memantulkan setiap potongan, mengubah abcde menjadi abcdedcba , menghasilkan

000010000 001000100 001010100 101000101 101010101

111000111 111010111 111101111 111111111 000000000

Sekarang, ị@mengambil kembali j th dan k th item array ini, di mana j, k adalah argumen pertama program. Perhatikan bahwa pengindeksan adalah berbasis 1 dan modular, sehingga elemen nol juga merupakan yang kesepuluh.

Akhirnya, bagi s€3setiap potongan dengan panjang sembilan menjadi tiga potongan dengan panjang tiga.

Dennis
sumber
1
Bagiku masih tampak ajaib, tapi aku menghargai upaya penjelasannya. Saya akan mengakui kesalahannya mungkin milik saya karena saya hanya seorang pengembang web PHP rendahan
ArtisticPhoenix
Ini 3digunakan 0untuk pips, tidak 1seperti yang lainnya.
Jonathan Allan
“¤o.ƤẸʠṚ’harus bekerja.
Jonathan Allan
@Jonathan Allan Terima kasih! Tidak yakin bagaimana itu terjadi ...
Dennis
8

Jelly , 13 byte

⁽½ÑD<;ḂŒBs3µ€

Cobalah online!

Menggabungkan ide Dennis menggunakan ŒB(bouncing) dalam jawaban ini dan pengamatan Xcali dalam jawaban ini untuk mendapatkan 13 byte.


Jelly , 28 byte

(dengan pencetakan cantik)

Hanya sekarang saya tahu bahwa string string Jelly secara otomatis dihentikan ...

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

Cobalah online!

pengguna202729
sumber
Rupanya pendekatan saya ⁽½ÑDmengarah ke bytecount kurang dari jawaban EriktheOutgolfer di “¤¦¢¬‘ sini
user202729
Bukankah lebih baik untuk menyusun ulang fungsi sehingga 13 byte (mengalahkan Dennis) di atas dan dapat dilihat lebih mudah?
Zacharý
@ Zacharý Solusi sementara. Akan memperbaikinya nanti.
user202729
6

PHP 155 , 150 byte

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

Dibutuhkan array bilangan bulat sebagai input. Untuk pengujian:

d([1,2]);

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

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

Format output:

---

 0 

---
  0

0  

Lihat langsung di sini

Solusi saya

Untuk solusi saya, saya menggunakan matriks yang terdiri dari angka bitwise (kekuatan 2). Dapat divisualisasikan seperti ini:

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

Dan kemudian array penyimpanan yang terdiri dari posisi bit untuk pips dari setiap domino yang dikorelasikan oleh indeks bernomor:

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

Jadi hanya untuk memperjelas:

  • contoh 0: indeks 0atau nilai 0akan menjadi domino kosong, yang selalu salah.
  • contoh 1: indeks 1atau nilai 16akan menjadi domino nomor satu dan dalam matriks yang ada di tengah 16.
  • contoh 2: indeks 2atau nilai 68akan menjadi domino nomor dua dan dalam matriks yang kanan atas 4dan kiri bawah 64 atau4|64
  • contoh 3: indeks 5atau nilai 341akan menjadi nomor lima domino dan dalam matriks itu1|4|16|64|256
  • contoh 4: indeks 9atau nilai 511akan menjadi nomor sembilan domino dan dalam matriksnya adalah kombinasi dari semua bit.

Setelah itu didirikan itu adalah hal yang cukup sederhana dari perulangan untuk 9 posisi dalam matriks, dan pengaturan $xuntuk 2ke kekuasaan dari$i

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

Lalu kami melakukan sedikit demi sedikit dan &saat kami beralih melalui titik-titik itu. Jadi sebagai contoh sake akan menggunakan contoh 2 dari atas dan saya akan menggunakan xspasi sebagai ganti demi kejelasan visual:

  • iterasi 1, 68 & 1 ? 0 : 'x'yang menghasilkan'x'
  • iterasi 2, 68 & 2 ? 0 : 'x'yang menghasilkan'x'
  • iterasi 3, 68 & 4 ? 0 : 'x'yang menghasilkan0
  • iterasi 4, 68 & 8 ? 0 : 'x'yang menghasilkan'x'
  • iterasi 5, 68 & 16 ? 0 : 'x'yang menghasilkan'x'
  • iterasi 6, 68 & 32 ? 0 : 'x'yang menghasilkan'x'
  • iterasi 7, 68 & 64 ? 0 : 'x'yang menghasilkan0
  • iterasi 8, 68 & 128 ? 0 : 'x'yang menghasilkan'x'
  • iterasi 9, 68 & 256 ? 0 : 'x'yang menghasilkan'x'

Ketika loop selesai kita berakhir dengan string ini "xx0xxx0xx".

Lalu kita tambahkan perbatasan "---xx0xxx0xx"ke sana (sebenarnya saya mulai dengan perbatasan, tapi apa pun) .

Dan akhirnya kita chunk_split () pada 3's untuk:

---
xx0
xxx
0xx

Jangan ragu untuk memberi tahu saya apa yang Anda pikirkan.

ArtisticPhoenix
sumber
Anda dapat mempersingkat lebih jauh dengan menggunakan operator eksponensial yang **diperkenalkan dalam PHP 5.6 alih-alih pow() php.net/manual/en/language.operators.arithmetic.php
Daniel
@Aniel - Terima kasih disimpan 5 byte! Saya tidak sadar mereka menambahkan itu, saya selalu mencoba menggunakan ^tapi itu XOR bitwise ... lol
ArtisticPhoenix
Saya tidak berpikir Anda diizinkan untuk mencetak batas ekstra.
12Me21
tunjukkan di mana itu bahkan mengisyaratkan itu di OP.
ArtisticPhoenix
Saya kira ini akan lebih pendek beroperasi $argv. Fungsi overhead dalam PHP biasanya 13 byte.
Titus
6

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

Perl 5 , 70 byte

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

Cobalah online!

Menggunakan 0 untuk spasi putih dan 1 untuk pip. Metode yang cukup sederhana: amati bahwa ketika digit naik, sekali pip "on", itu tidak pernah padam, "kecuali digit yang ada di tengah. Di posisi tengah, aktif untuk semua nomor ganjil. Jadi, untuk setiap posisi, itu masalah sederhana memeriksa apakah digit lebih besar dari digit terakhir yang dimatikan. The ||0menciptakan output ketika kondisi salah. Dalam Perl, false adalah undefyang menghasilkan null.

Xcali
sumber
4

JavaScript (ES6), 79 78 byte

Disimpan 1 byte berkat @ETHproductions

Mengambil input dalam sintaks currying (a)(b)dan mengeluarkan domino ASCII vertikal.

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

Demo


Versi horizontal, 80 79 byte

Disimpan 1 byte berkat @ETHproductions

Mengambil input sebagai array dari 2 bilangan bulat dan mengeluarkan domino ASCII horizontal.

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

Demo

Arnauld
sumber
Bagus, sangat mirip dengan apa yang saya miliki. Simpan satu byte dengan salah satu n>d|0atau(+d?n>d:n)&1
Produk ETH
4

APL (Dyalog) , 25 byte

2∘|(3 3⍴⊢,,∘⌽)¨>∘3 5 1 7¨

Cobalah online!

-2 Terima kasih kepada ngn .

Format output agak aneh: fungsi ini mengembalikan array berisi dua bentuk-3,3 array yang masing-masing berisi 0s dan 1s.

Erik the Outgolfer
sumber
menulis ulang untuk -2 byte:2∘|(3 3⍴⊢,,∘⌽)¨>∘3 5 1 7¨
ngn
@ ngn terima kasih, itu pintar: p
Erik the Outgolfer
3

C (gcc) , 115 byte

i;g(x){for(i=0;++i<10;)printf("%c%c",32+(i^5?x>" CEAG@GAEC"[i]-64:x%2),i%3?32:10);}f(a,b){g(a),puts("-----"),g(b);}

Cobalah online!

gastropner
sumber
113 byte
ceilingcat
2

Javascript (ES6), 87 byte

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>

Herman L.
sumber
DOMino yang bagus ...
Buah Esolanging
2

Haskell - 88 karakter

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

Mengambil daftar dua angka yang menunjukkan wajah, mengembalikan daftar daftar bool. Tidak sesingkat itu tetapi saya menemukan solusinya menarik.

Geoff Reedy
sumber
Anda bisa menggunakan mapalih-alih repeatdan zipWith: map$(<$>[[(>4),(>5),(>1)],[(>7),odd,(>7)],[(>1),(>5),(>3)]]).map.flip($)Coba online!
Laikoni
Non-pointfree menghemat dua byte lagi: Coba online!
Laikoni
2

Pip , 32 27 24 21 byte

-3 byte berkat @DLosc

FcgP[Yc>_M3517c%2RVy]

Cobalah online!

Penjelasan:

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.
Buah Esolanging
sumber
1
Selamat telah memenangkan hadiah Pip! Sekarang setelah periode karunia berakhir, saya dapat memberitahu Anda: simpan 3 byte dengan memetakan ke skalar, 3517bukan daftar [3 5o7]. ;)
DLosc
1

> <> , 57 + 3 = 60 byte

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

Cobalah secara Online . Output sebagai domino vertikal dengan 1s untuk titik, 0s untuk spasi putih dan 9s untuk pemisah seperti:

001
000
100
999
111
111
111

Secara teknis ini dapat diperpanjang hingga 12 nilai yang dimasukkan.

Versi lama:

> <> , 76 + 3 = 79 byte

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

Cobalah secara Online . Output sebagai domino vertikal dengan 1s untuk titik dan 0s untuk spasi putih seperti ini:

001
000
100
---
111
111
111
Jo King
sumber
1

Arang , 46 44 43 39 byte

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

EE²℅§@APQTUVW^_N

Baca dua bilangan bulat dan petakan di tabel pencarian. Kemudian petakan hasilnya. (Ini secara efektif menangkap hasil sementara.)

  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

Hasilnya kemudian dicetak secara implisit pada garis yang berbeda, dengan garis kosong ekstra di antara setiap wajah karena hasilnya bersarang.

M⁵↑⁵

Bergerak ke atas dan gambar garis pemisah di antara wajah.

Versi horisontal 43 byte sebelumnya:

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

Bekerja secara vertikal.

P³

Cetak garis pemisah.

M⁷←

Posisikan ke awal wajah pertama.

FE²℅§@APQTUVW^_N

Baca dua bilangan bulat dan petakan di tabel pencarian.

F⁹«

Bersiaplah untuk menghasilkan hingga 9 odetik.

F¬﹪κ³⸿⸿

Tetapi mulailah kolom baru setiap tiga o s.

§ o÷ιX²↔⁻⁴κ

Konversikan 5 bit lebih rendah dari kode ASCII ke biner, dan kemudian mirror output untuk 4 odetik yang tersisa .

Neil
sumber
Format output agak liberal, yang seharusnya menghemat beberapa byte.
Dennis
1
Apa sihir ini
ArtisticPhoenix
@ Dennis Sebenarnya format output asli adalah yang paling membantu, karena secara otomatis memberi saya ruang untuk menggambar garis pemisah.
Neil
Ya Tuhan, ada dua Neils.
Zacharý
2
@ Zacharý Sebenarnya menurut halaman pengguna ada delapan, atau 40 jika Anda termasuk orang yang namanya mengandung Neil ...
Neil
1

Jelly , 16 byte

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

Cobalah online!

Menggunakan strategi Neil dan dekompresi dasar untuk menghasilkan nilai-nilai; output sebagai array biner. Mengambil daftar sebagai input.

Penjelasan:

Ç€
 € 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
ellie
sumber
0

APL + MENANG, 49 47 byte

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

Diedit sesuai komentar Adam, terima kasih, untuk menjalankan dengan nol asal indeks.

Meminta input layar sebagai vektor bilangan bulat satu untuk setiap wajah.

Outputnya berupa:

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

untuk input dari 7 3 dan0 5

Penjelasan:

(+\∊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 
Graham
sumber
Mengapa tidak digunakan ⎕IO←0untuk menyelamatkan diri sendiri 1+?
Adám
@Adam Why not memang - lazy;)
Graham
0

Python 2 , 121 byte

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

Cobalah online!

Dikurangi menjadi 121 menggunakan lambda setelah kembali dan membaca kembali aturan. Sekarang menampilkan daftar baris.

Versi sebelumnya dengan output yang diformat dengan baik:

Python 2 , 156 153 147 141 byte

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

Cobalah online!

-3 dengan terima kasih kepada @NieDzejkob

Mengambil input sebagai 2 bilangan bulat dan output dalam format vertikal dengan 0 = spasi dan 1 = dot.

ElPedro
sumber
153 byte
NieDzejkob
0

Pyt , 220 154 byte

Upaya kedua (154 byte)

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↔ŕ↔ŕ↔

Penjelasan:

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



Upaya pertama (220 byte):

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ᴇ↔⁻łŕ↔ŕŕŕŕŕŕáƇǰ

Penjelasan:

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


Cobalah online!

mudkip201
sumber
0

05AB1E , 34 byte

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

Cobalah online!


Ini sulit karena 05AB1E memiliki bantalan yang buruk.


Penjelasan dasar:

  • Ada 4 pola signifikan di sini yaitu 2, 4, 6 dan 8.
  • 3,5,7 dan 9 adalah pola lainnya ditambah 1.
  • 1 tidak signifikan karena simetri, jika inputnya genap, kurangi 1 untuk mengganti bit tengah.
  • Beralih LSB memungkinkan bit tengah dibalik karena mirroring.
Guci Gurita Ajaib
sumber
0

SmileBASIC, 92 69 byte

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

Contoh:

? 7,2
111
010
111
777
001
000
100

Inilah yang terjadi ketika aturan Anda tidak cukup ketat.

12Me21
sumber
0

FALSE, 116 80 78 70 69 66 63 61 59 58 byte

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

masih mengerjakan ini ...

12Me21
sumber
0

Chip ,142 135 byte

! 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

Cobalah online!

Input adalah serangkaian digit. Menggunakan nol sebagai pips. Menarik pip untuk satu nomor, membaca byte input selanjutnya. Jika tidak ada byte berikutnya, akhiri, gambarkan pembagi dan lanjutkan untuk memulai.

Setiap Z(atau z) sesuai dengan satu karakter output, mereka diposisikan untuk menembak secara berurutan dari atas ke bawah. The dikapitalisasi A, B, C, dan Dbersesuaian dengan rendah empat bit dari input (itu semua kita melihat, begitu "34" == "CD" == "st" ...). Huruf kecil yang b, d, e, fsesuai dengan berbagai potongan-potongan output.

Dapat membuat domino panjang tak terbatas juga; coba berikan 0123456789sebagai masukan.

Phlarx
sumber
0

PHP, 116 byte

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

membutuhkan PHP 5.5 atau yang lebih baru. Jalankan dengan -nratau coba online .

Titus
sumber
0

C (gcc) , 150 146 byte

p(b){printf(" %c",33-b);}P(a){p(a<4),p(a<6),p(a<2),p(23),p(a<8),p(~a&1),p(a<8),p(23),p(a<2),p(a<6),p(a<4),p(23);}f(a,b){P(a),puts(" -----"),P(b);}

Cobalah online!

Jonathan Frech
sumber
@ceilingcat Terima kasih.
Jonathan Frech