Vẽ cho tôi một domino


35

Thử thách

Cho hai chữ số 0-9 làm đầu vào, xuất ra một domino (từ bộ chín domino kép ) với số pips (dấu chấm) trên hai mặt. Mười khuôn mặt có thể trông như thế này (cách nhau bằng đường ống):

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

Hoặc trên các dòng riêng biệt:

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

Định dạng đầu vào

Bạn có thể nhận đầu vào ở bất kỳ định dạng hợp lý nào, bao gồm nhưng không giới hạn ở:

  • Hai số nguyên, chuỗi hoặc mảng đơn;
  • Một số nguyên duy nhất từ ​​0-99;
  • Một mảng gồm hai số nguyên;
  • Một chuỗi gồm hai chữ số.

Định dạng đầu ra

  • Hai mặt có thể được xếp theo chiều ngang, cách nhau bằng các đường ống như sau:
    o|o   o
     |  o  
o    |o   o
  • Hoặc chúng có thể được xếp theo chiều dọc, cách nhau bởi các dấu gạch nối như vậy:
    o
     
o    
-----
o   o
  o  
o   o
  • Bạn có thể xuất một đường viền xung quanh domino nếu bạn muốn.
  • Bạn cũng có thể chọn xuất danh sách các dòng, danh sách hai mặt hoặc kết hợp các mặt này.
  • Bạn có thể sử dụng bất kỳ ký tự không phải khoảng trắng nào cho các pips (tôi đã sử dụng o).
  • Nếu bạn thực sự muốn, bạn có thể sử dụng 0cho khoảng trắng và 1cho pips, hoặc False/ True(hoặc tương đương với ngôn ngữ của bạn) nếu xuất ra một mảng.
  • Bạn có thể xóa khoảng trắng giữa các cột; đây là đầu ra hợp lệ cho 7, 7:
ooo|ooo
 o | o 
ooo|ooo
  • Bất kỳ khuôn mặt nào cũng có thể xoay 90 độ. Đây cũng là một đầu ra hợp lệ cho 7, 7:
o   o|o o o
o o o|  o  
o   o|o o o
  • Bạn có thể có nhiều khoảng trắng hàng đầu / ít theo dõi tùy thích, miễn là phần chính của đầu ra vẫn phù hợp với các ràng buộc khác.
  • Mỗi mặt phải cao 3 dòng, ngay cả khi các dòng trống. Đối với 0, 1 bạn không thể xuất kết quả này:
-----

  o

Nhưng bạn có thể xuất ra điều này:




-----

  o

Tương tự, nếu bạn xuất ra một danh sách hai danh sách các dòng, bạn có thể làm [["", "", ""], ["", " o", ""]], nhưng không [[""], [" o "]].

Chấm điểm

Đây là , vì vậy mã ngắn nhất tính theo byte trong mỗi ngôn ngữ sẽ thắng.


Vì vậy, cho đầu vào [2, 1], tôi có thể đầu ra [[[0,0,1],[0,0,0],[1,0,0]],[[0,0,0],[0,1,0],[0,0,0]]]?
Dennis

@Dennis Đúng.
Sản xuất ETH

2
Là dấu phân cách giữa các mặt phải là dấu gạch ngang, hoặc nó có thể là một giá trị phù hợp khác?
Jo King

@JoKing Tôi sẽ nói bạn có thể sử dụng bất kỳ ký tự nhất quán nào ngoài các ký tự bạn đang sử dụng.
Sản phẩm ETH

[0,5,21,29,31]tất cả các con số quan trọng ở đây các bạn của tôi.
Bạch tuộc ma thuật Urn

Câu trả lời:


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]

Hãy thử trực tuyến!

Tín dụng


@ Mr.Xcoder Cập nhật lại.
Neil

1
Các định dạng là tùy chọn. Trả về một cặp ma trận tiết kiệm ít nhất 22 byte.
Dennis

1
68 byte không có định dạng (lưu ý rằng 0Falsebằng nhau trong Python, vì vậy nó sẽ ổn).
Jonathan Allan

@Jonathan ALLan Rất thông minh, cập nhật.
Neil

64 byte. Nếu bạn phải làm một lambda, một sự hiểu biết danh sách có thể ngắn hơn.
hoàn toàn là

12

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

Tôi đang ở trên stack stack cho socket trong python, khi cái này bật lên, nói tại sao không? golf mã đầu tiên, vì vậy tôi không hoàn toàn chắc chắn nếu tôi tuân thủ các quy tắc 100% (và nếu không và ai đó muốn ăn cắp cookie câu tục ngữ của tôi và sửa nó, vì vậy hãy làm như vậy). Với 'o' và '', 255 245 272 265 244 238 228 byte. thay +48 bằng * 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);}}

Hãy thử trực tuyến!

Cách thức hoạt động:
Tôi sử dụng dịch chuyển bit và bitwise và để tìm xem một điểm cần rõ ràng hay một pip, sau đó bù 0 hoặc 1 vào giá trị ASCII chính xác. nó gây rối trên 4 và 5, vì vậy họ cần sửa chữa. thực sự đã thêm một vài byte đã có thể xóa một vài byte bằng cách xóa mặt nạ và chỉ sử dụng 1 (doh)

Đặc biệt cảm ơn ông Xcoder về 7 byte ít hơn bằng cách xóa #define dư thừa
Thay đổi : đã xóa memset -21 byte. làm giảm logic bit cho 6, 4, 2 để phụ thuộc vào 8 | 4 & 2, 8 | 4, 8 | 4 | 2, tương ứng. -6 byte. loại bỏ các dòng mới bổ sung bằng cách sử dụng đặt thay vì printf, cũng ngắn hơn. rút ngắn mảng xuống còn 11, loại bỏ gán thêm. -15 byte. BÂY GIỜ tôi nghĩ đó là điều tốt nhất tôi có thể làm.


7
Chào mừng đến với PPCG!
Xù xì

Xin chào, chào mừng đến với PPCG! Bạn có thể rút ngắn mã của mình thêm một chút nữa, 245 byte
Ông Xcoder

'\n'có thể được thay thế bởi 10. (vì trong C, kiểu dữ liệu char cũng là kiểu dữ liệu số nguyên) Một số charcó thể được thay thế bằng int. (hoặc bỏ qua hoàn toàn)
user202729

Xuống tới 184 byte ở đây nhưng vẫn còn nhiều hơn so với golf c hiện tại, vì vậy.
Andrew Baumher


10

Thạch , 20 byte

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

Hãy thử trực tuyến!

Phiên bản thay thế, đầu ra ban đầu, 33 32 31 byte

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

Cảm ơn @ user202729 vì đã chơi golf 1 byte!

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

Đầu tiên, “¤o.ƤẸʠṚ’- một số nguyên trong cơ sở phỏng đoán 250 - đặt giá trị trả về là 1086123479729183 .

Sau đó, chuyển đổi giá trị trả về thành nhị phân và lấy logic KHÔNG của mỗi chữ số, thu được mảng

00001001000010110100101011110011101111101111100000

Tiếp theo, s5ŒBchia mảng đó thành các đoạn có độ dài 5 , sau đó trả lại từng đoạn, biến abcde thành abcdedcba , mang lại

000010000 001000100 001010100 101000101 101010101

111000111 111010111 111101111 111111111 000000000

Bây giờ, ị@lấy j thứk th mục của mảng này, nơi j, k là số đầu tiên của chương trình. Lưu ý rằng lập chỉ mục là dựa trên 1 và mô-đun, vì vậy phần tử zeroth cũng là phần mười.

Cuối cùng, s€3chia từng đoạn có độ dài chín thành ba phần có chiều dài ba.


1
Vẫn giống như phép màu đối với tôi, nhưng tôi đánh giá cao nỗ lực giải thích. Tôi sẽ thừa nhận lỗi có lẽ là của tôi vì tôi chỉ là một nhà phát triển web PHP thấp
ArtisticPhoenix

Việc 3sử dụng 0cho pips, không 1giống như tất cả những người khác.
Jonathan Allan

“¤o.ƤẸʠṚ’nên làm việc.
Jonathan Allan

@Jonathan ALLan Cảm ơn! Không chắc điều đó đã xảy ra như thế nào ...
Dennis

8

Thạch , 13 byte

⁽½ÑD<;ḂŒBs3µ€

Hãy thử trực tuyến!

Kết hợp ý tưởng sử dụng (nảy) của DennisŒB trong câu trả lời này và quan sát của Xcali trong câu trả lời này để có được 13 byte.


Thạch , 28 byte

(có in đẹp)

Chỉ bây giờ tôi mới biết rằng chuỗi ký tự Jelly được tự động chấm dứt ...

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

Hãy thử trực tuyến!


Rõ ràng cách tiếp cận của tôi ⁽½ÑDdẫn đến ít tiền hơn so với câu trả lời của EriktheOutgolfer “¤¦¢¬‘ ở đây
user202729

Sẽ không tốt nhất khi sắp xếp lại các chức năng sao cho 13 byte (outgolfing Dennis) đứng đầu và có thể được nhìn thấy dễ dàng hơn?
Zacharý

@ Zacharý Giải pháp tạm thời. Sẽ sửa nó sau.
dùng202729

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

Nó nhận một mảng các số nguyên làm đầu vào. Để thử nghiệm:

d([1,2]);

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

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

Định dạng đầu ra:

---

 0 

---
  0

0  

Kiểm tra nó trực tiếp ở đây

Giải pháp của tôi

Đối với giải pháp của tôi, tôi đã sử dụng một ma trận bao gồm các số bit (lũy thừa là 2). Nó có thể được hình dung như thế này:

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

Và sau đó là một mảng lưu trữ bao gồm các vị trí bit cho các pips của mỗi domino tương quan với chỉ số được đánh số:

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

Vì vậy, chỉ cần làm rõ:

  • ví dụ 0: chỉ mục 0hoặc giá trị 0sẽ là domino trống, luôn luôn sai.
  • ví dụ 1: chỉ số 1hoặc giá trị 16sẽ là domino số một và trong ma trận nằm ở trung tâm 16.
  • ví dụ 2: chỉ số 2hoặc giá trị 68sẽ là số hai domino và trong ma trận nằm trên cùng bên phải 4và dưới cùng bên trái 64 hoặc4|64
  • ví dụ 3: chỉ số 5hoặc giá trị 341sẽ là số năm domino và trong ma trận đó là1|4|16|64|256
  • ví dụ 4: chỉ số 9hoặc giá trị511 sẽ là số chín domino và trong ma trận nó là sự kết hợp của tất cả các bit.

Khi đã được thành lập đó là một vấn đề khá đơn giản của Looping cho 9 vị trí trong ma trận, và thiết lập $xđể 2cho sức mạnh của$i

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

Sau đó, chúng tôi làm một chút và &khi chúng tôi lặp đi lặp lại qua những điểm đó. Vì vậy, ví dụ sake sẽ sử dụng ví dụ 2 từ phía trên và tôi sẽ sử dụng xcác khoảng trắng thay vì mục đích rõ ràng:

  • lặp 1, 68 & 1 ? 0 : 'x'kết quả là'x'
  • lặp 2, 68 & 2 ? 0 : 'x'kết quả là'x'
  • lặp 3, 68 & 4 ? 0 : 'x'kết quả là0
  • lặp 4, 68 & 8 ? 0 : 'x'kết quả là'x'
  • lặp 5, 68 & 16 ? 0 : 'x'kết quả là'x'
  • lặp 6, 68 & 32 ? 0 : 'x'kết quả là'x'
  • lặp 7, 68 & 64 ? 0 : 'x'kết quả là0
  • lặp 8, 68 & 128 ? 0 : 'x'kết quả là'x'
  • lặp 9, 68 & 256 ? 0 : 'x'kết quả là'x'

Khi vòng lặp hoàn thành, chúng tôi kết thúc với chuỗi này "xx0xxx0xx" .

Sau đó, chúng tôi thêm đường viền "---xx0xxx0xx"cho nó (tôi thực sự bắt đầu với đường viền, nhưng bất cứ điều gì) .

Và cuối cùng, chúng tôi chunk_split () trên 3 giây cho:

---
xx0
xxx
0xx

Hãy cho tôi biết những gì bạn nghĩ.


Bạn có thể rút ngắn hơn nữa bằng cách sử dụng toán tử lũy thừa được **giới thiệu trong PHP 5.6 thay vì pow() php.net/manual/en/lingu.operators.arithatures.php
Daniel

@Daniel - Cảm ơn đã lưu 5 byte! Tôi không biết họ đã nói thêm rằng, tôi luôn cố gắng sử dụng ^nhưng đó là XOR bitwise ... lol
ArtisticPhoenix

Tôi không nghĩ bạn được phép in thêm một đường viền.
12Me21

chỉ cho tôi nơi nó thậm chí gợi ý từ xa về điều đó trong OP.
ArtisticPhoenix

Tôi đoán điều này sẽ ngắn hơn hoạt động trên $argv. Chi phí hoạt động trong PHP thường là 13 byte.
Tít

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

Hãy thử trực tuyến!

Sử dụng 0 cho khoảng trắng và 1 cho pips. Phương pháp khá đơn giản: quan sát rằng khi chữ số tăng lên, một khi pip được "bật", nó sẽ không bao giờ "tắt", ngoại trừ cái ở giữa. Ở vị trí giữa, nó là trên cho tất cả các số lẻ. Do đó, đối với mỗi vị trí, việc kiểm tra xem chữ số này có lớn hơn chữ số cuối cùng không. Việc ||0tạo đầu ra khi điều kiện là sai. Trong Perl, false là undefđầu ra là null.


4

JavaScript (ES6), 79 78 byte

Đã lưu 1 byte nhờ @ETHproductions

Đưa đầu vào theo cú pháp currying (a)(b)và xuất ra một domino ASCII dọc.

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

Bản giới thiệu


Phiên bản nằm ngang, 80 79 byte

Đã lưu 1 byte nhờ @ETHproductions

Lấy đầu vào là một mảng gồm 2 số nguyên và xuất ra một domino ASCII nằm ngang.

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

Bản giới thiệu


Đẹp, rất giống với những gì tôi đã có. Lưu một byte với một trong hai n>d|0hoặc(+d?n>d:n)&1
ETHproductions



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>


DOMinoes đẹp ...
Trái cây Esolanging

2

Haskell - 88 ký tự

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

Lấy danh sách hai số chỉ các mặt, trả về danh sách danh sách danh sách bool. Không phải là ngắn nhưng tôi tìm thấy giải pháp thú vị.


Bạn chỉ có thể sử dụng mapthay vì repeatzipWith: map$(<$>[[(>4),(>5),(>1)],[(>7),odd,(>7)],[(>1),(>5),(>3)]]).map.flip($)Dùng thử trực tuyến!
Laikoni

Non-pointfree tiết kiệm thêm hai byte: Hãy thử trực tuyến!
Laikoni

2

Pip , 32 27 24 21 byte

-3 byte nhờ @DLosc

FcgP[Yc>_M3517c%2RVy]

Hãy thử trực tuyến!

Giải trình:

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
Chúc mừng bạn đã giành được tiền thưởng Pip! Bây giờ thời kỳ tiền thưởng đã kết thúc, tôi có thể nói với bạn: lưu 3 byte bằng cách ánh xạ vào vô hướng 3517thay vì danh sách [3 5o7]. ;)
DLosc

1

> <> , 57 + 3 = 60 byte

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

Dùng thử trực tuyến . Đầu ra dưới dạng domino dọc với 1 giây cho dấu chấm, 0 giây cho khoảng trắng và 9 giây cho dấu phân cách như vậy:

001
000
100
999
111
111
111

Về mặt kỹ thuật, điều này có thể được mở rộng lên tới 12 giá trị được nhập.

Phiên bản cũ:

> <> , 76 + 3 = 79 byte

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

Dùng thử trực tuyến . Đầu ra dưới dạng domino dọc với 1s cho dấu chấm và 0 cho khoảng trắng như vậy:

001
000
100
---
111
111
111

1

Than , 46 44 43 39 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

EE²℅§@APQTUVW^_N

Đọc hai số nguyên và ánh xạ chúng trong bảng tra cứu. Sau đó, bản đồ trên kết quả. (Điều này có hiệu quả nắm bắt kết quả trong một thời gian.)

  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

Các kết quả sau đó được in ngầm trên các dòng riêng biệt, với một dòng trống thêm giữa mỗi mặt vì các kết quả được lồng vào nhau.

M⁵↑⁵

Di chuyển lên và vẽ đường phân chia ở giữa các mặt.

Phiên bản ngang 43 byte trước đó:

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

Làm việc theo chiều dọc.

P³

In đường phân chia.

M⁷←

Vị trí để bắt đầu của khuôn mặt đầu tiên.

FE²℅§@APQTUVW^_N

Đọc hai số nguyên và ánh xạ chúng trong bảng tra cứu.

F⁹«

Chuẩn bị xuất ra tối đa 9 ogiây.

F¬﹪κ³⸿⸿

Nhưng bắt đầu một cột mới cứ sau ba ogiây.

§ o÷ιX²↔⁻⁴κ

Chuyển đổi 5 bit thấp hơn của mã ASCII thành nhị phân, sau đó phản chiếu đầu ra trong 4 ogiây còn lại .


Định dạng đầu ra khá tự do, cần lưu một vài byte.
Dennis

1
Phù thủy này là gì
ArtisticPhoenix

@Dennis Trên thực tế định dạng đầu ra ban đầu là hữu ích nhất, vì nó tự động cho tôi chỗ để vẽ đường phân chia.
Neil

Trời ơi, có hai Neils.
Zacharý

2
@ Zacharý Trên thực tế theo trang người dùng, có tám hoặc 40 nếu bạn bao gồm những người có tên chứa Neil ...
Neil

1

Thạch , 16 byte

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

Hãy thử trực tuyến!

Sử dụng chiến lược của Neil và giải nén cơ sở để tạo ra các giá trị; đầu ra như một mảng nhị phân. Lấy một danh sách làm đầu vào.

Giải trình:

Ç€
 € 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 + THẮNG, 49 47 byte

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

Được chỉnh sửa theo nhận xét của Adam, cảm ơn, để chạy với chỉ số gốc bằng không.

Nhắc nhở cho màn hình nhập dưới dạng một vectơ số nguyên cho mỗi mặt.

Đầu ra có dạng:

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

cho một đầu vào của 7 30 5

Giải trình:

(+\∊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 

Tại sao không sử dụng ⎕IO←0để tự cứu mình 1+?
Adám

@Adam Tại sao không thực sự - lười biếng;)
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]]

Hãy thử trực tuyến!

Giảm xuống 121 bằng lambda sau khi quay lại và đọc lại các quy tắc. Bây giờ xuất ra một danh sách các dòng.

Phiên bản trước với đầu ra được định dạng độc đáo:

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

Hãy thử trực tuyến!

-3 cảm ơn @NieDzejkob

Lấy đầu vào là 2 số nguyên và đầu ra ở định dạng dọc với 0 = dấu cách và 1 = dấu chấm.



0

Pyt , 220 154 byte

Lần thử thứ hai (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↔ŕ↔ŕ↔

Giải trình:

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



Lần thử đầu tiên (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ᴇ↔⁻łŕ↔ŕŕŕŕŕŕáƇǰ

Giải trình:

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


Hãy thử trực tuyến!


0

05AB1E , 34 byte

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

Hãy thử trực tuyến!


Điều này thật khó khăn vì 05AB1E có phần đệm xấu.


Giải thích cơ bản:

  • Có 4 mẫu quan trọng ở đây là 2, 4, 6 và 8.
  • 3,5,7 và 9 là các mẫu khác cộng với 1.
  • 1 không đáng kể do tính đối xứng, nếu đầu vào là chẵn, trừ 1 để chuyển bit giữa.
  • Việc điều chỉnh LSB cho phép bit giữa bị lật do phản chiếu.

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

Thí dụ:

? 7,2
111
010
111
777
001
000
100

Đây là những gì xảy ra khi quy tắc của bạn không đủ nghiêm ngặt.


0

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

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

vẫn đang làm việc này ...


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

Hãy thử trực tuyến!

Đầu vào là một chuỗi các chữ số. Sử dụng số không là pips. Vẽ các pips cho một số, đọc byte đầu vào tiếp theo. Nếu không có byte tiếp theo, chấm dứt, người khác vẽ dải phân cách và bắt đầu.

Mỗi Z(hoặc z) tương ứng với một ký tự đầu ra, chúng được định vị để bắn theo thứ tự từ trên xuống dưới. Các vốn A, B,C , và Dtương ứng với bốn bit thấp của đầu vào (đó là tất cả chúng ta nhìn vào, vì vậy "34" == "CD" == "st" ...). Các chữ thường b, d, e,f tương ứng với bit khác nhau của đầu ra.

Có thể làm domino dài vô hạn quá; thử cho đi0123456789 làm đầu vào.


0

PHP, 116 byte

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

yêu cầu PHP 5.5 trở lên. Chạy với -nrhoặc thử trực tuyến .


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.