Намалюй мені доміно


35

Виклик

Враховуючи дві цифри 0-9, введіть доміно (із набору подвійних дев'яти доміно ) із цією кількістю піпсів (крапок) на двох гранях. Десять можливих граней виглядають так (розділені трубами):

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

Або на окремих рядках:

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

Формати введення

Ви можете брати інформацію в будь-якому розумному форматі, включаючи, але не обмежуючись цим:

  • Два окремих цілих чисел, рядків або однотонних масивів;
  • Одиничне ціле число від 0-99;
  • Масив з двох цілих чисел;
  • Рядок з двох цифр.

Вихідні формати

  • Дві грані можуть бути вирівняні горизонтально, розділеними так трубами:
    o|o   o
     |  o  
o    |o   o
  • Або вони можуть бути вертикально вирівняні, розділені дефісами так:
    o
     
o    
-----
o   o
  o  
o   o
  • При бажанні ви можете вивести рамку навколо доміно.
  • Ви також можете вибрати список рядків, список двох граней або їх комбінацію.
  • Ви можете використовувати будь-який символ без пробілів для піпсів (я використовував o).
  • Якщо ви дійсно бажаєте, ви можете використовувати 0для пробілів та 1піпсів, або False/ Trueабо еквівалент вашої мови, якщо виводити масив.
  • Ви можете видалити пробіл між стовпцями; це дійсний вихід для 7, 7:
ooo|ooo
 o | o 
ooo|ooo
  • Будь-яка з граней може обертатися на 90 градусів. Це також дійсний вихід для 7, 7:
o   o|o o o
o o o|  o  
o   o|o o o
  • У вас може бути стільки / мало провідних / кінцевих пробілів, скільки вам подобається, доки основна частина результату все ще відповідає іншим обмеженням.
  • Кожне обличчя повинно бути 3 рядки у висоту, навіть якщо рядки порожні. Для 0, 1 ви не можете цього вивести:
-----

  o

Але ви можете вивести це:




-----

  o

Так само, якби ви виводили список з двох списків рядків, ви могли б зробити [["", "", ""], ["", " o", ""]], але ні [[""], [" o "]].

Оцінка балів

Це , тому виграє найкоротший код у байтах на кожній мові.


Отже, для введення [2, 1]я можу вивести [[[0,0,1],[0,0,0],[1,0,0]],[[0,0,0],[0,1,0],[0,0,0]]]?
Денніс

@Dennis Правильно.
ETHproductions

2
Чи повинен роздільник між гранями бути тире, чи це може бути якесь інше послідовне значення?
Джо Кінг

@JoKing Я скажу, що ви можете використовувати будь-який послідовний символ, окрім тих, які ви вже використовуєте.
ETHproductions

[0,5,21,29,31]всі важливі номери тут мої друзі.
Чарівний восьминога Урна

Відповіді:


14

Python 2 , 101 97 92 68 64 байт

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

Спробуйте в Інтернеті!

Кредити


@ Mr.Xcoder Оновлено знову.
Ніл

1
Форматування необов’язкове. Повернення пари матриць економить щонайменше 22 байти.
Денніс

1
68 байт без форматування (зауважте, що в Python рівні 0та Falseрівні, тому має бути добре).
Джонатан Аллан

@JonathanAllan Дуже розумний, оновлений.
Ніл

64 байти. Якщо вам доведеться зробити лямбда, розуміння списку, ймовірно, коротше.
повністюлюдський

12

C (gcc) , 252 242 269 262 241 235 220 байт

Я був на переповнюванні стека для розеток у python, коли це спливе, сказав, чому ні? Перший код гольфу, тож я не зовсім впевнений, чи дотримувався я правил 100% (а якщо ні, а хтось хоче вкрасти моє поспільне печиво і виправити його, так і нехай). З 'о' і '', 255 245 272 265 244 238 228 байт. замініть +48 на * 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);}}

Спробуйте в Інтернеті!

Як це працює:
я використовую трохи зсув і біт, і щоб дізнатися, чи має місце бути чистим чи піп, а потім змістити 0 або 1 до правильного значення ASCII. вона псується на 4 і 5, тому їм потрібна була якась фіксація. насправді додано кілька байт. вдалося видалити кілька байтів, видаливши маску та просто скориставшись 1 (doh)

Особлива подяка містеру Xcoder за 7 менших байтів, видаливши зайвий #define
Changes: Видалено memset -21 байт. переробити логіку бітів на 6, 4, 2 залежно від 8 | 4 & 2, 8 | 4, 8 | 4 | 2 відповідно. -6 байт. видалено зайві нові рядки, використовуючи замість printf путів, які також коротші. скоротив масив до 11, видаливши додаткове призначення. -15 байт. ЗАРАЗ я думаю, що це найкраще, що я можу зробити.


7
Ласкаво просимо до PPCG!
Кудлатий

Привіт, ласкаво просимо до PPCG! Ви можете трохи скоротити свій код, 245 байт
Містер Xcoder

'\n'можна замінити на 10. (оскільки в C типи даних char також є цілими типами даних) Деякі, charймовірно, можуть бути замінені на int. (або повністю пропустити)
user202729

Аж до 184 байт тут , але це все ще більше , ніж поточний гр гольф, так.
Ендрю Баумхер


10

Желе , 20 байт

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

Спробуйте в Інтернеті!

Альтернативна версія, оригінальний вихід, 33 32 31 байт

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

Дякуємо @ user202729 за те, що гольф на 1 байт!

Спробуйте в Інтернеті!

Як це працює

По-перше, “¤o.ƤẸʠṚ’ціле число в прямолінійній частині бієктивної бази 250 - встановлює повернене значення 1086123479729183 .

Потім перетворює повернене значення у двійкове і приймає логічне НЕ кожної цифри, отримуючи масив

00001001000010110100101011110011101111101111100000

Далі, s5ŒBрозбиває цей масив на шматки завдовжки 5 , а потім підстрибує кожен шматок, перетворюючи ABCDE в abcdedcba , отримуючи

000010000 001000100 001010100 101000101 101010101

111000111 111010111 111101111 111111111 000000000

Тепер ị@витягує j- й і k- й елемент цього масиву, де j, k - перший аргумент програми. Зауважимо, що індексація базується на 1 і модульна, тому нульовий елемент також є десятим.

Нарешті, s€3розбиває кожен шматок довжиною дев'ять на три шматки довжиною три.


1
Все ще це виглядає як магія для мене, але я ціную спробу пояснення. Я визнаю, що винна, мабуть, моя, оскільки я просто низько розробник веб-сайту PHP
ArtisticPhoenix

3Використовується 0для пипсов, а НЕ 1як всі інші.
Джонатан Аллан

“¤o.ƤẸʠṚ’повинні працювати.
Джонатан Аллан

@JonathanAllan Дякую! Не впевнений, як це сталося ...
Денніс

8

Желе , 13 байт

⁽½ÑD<;ḂŒBs3µ€

Спробуйте в Інтернеті!

Поєднуючи ідею Денніса про використання ŒB(відмов) у цій відповіді та спостереження Xcali у цій відповіді, щоб отримати 13 байт.


Желе , 28 байт

(з гарною друком)

Тільки тепер я знаю, що буквальний рядок Jelly автоматично припиняється ...

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

Спробуйте в Інтернеті!


Мабуть, мій підхід ⁽½ÑDпризводить до меншої кількості рахунків, ніж відповідь EriktheOutgolfer “¤¦¢¬‘ тут
user202729

Чи не було б найкращим чином змінити порядок функцій, щоб 13 байт (перевершив Деніс) вгорі, і їх можна побачити легше?
Zacharý

@ Zacharý Тимчасове рішення. Виправить це пізніше.
user202729

6

PHP 155 , 150 байт

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

В якості входу береться масив цілих чисел. Для тестування:

d([1,2]);

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

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

Формат виводу:

---

 0 

---
  0

0  

Перевірте це тут

Моє рішення

Для свого рішення я використав матрицю, що складається з розрядних чисел (потужності 2). Його можна візуалізувати так:

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

А потім масив пам'яті, що складається з бітових позицій для піпсів кожного доміно, співвіднесених пронумерованим індексом:

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

Тож просто для уточнення:

  • приклад 0: індекс 0або значення 0буде порожнім доміно, яке завжди є помилковим.
  • приклад 1: індекс 1або значення 16буде доміно номер один і в матриці, яка знаходиться в центрі 16.
  • приклад 2: індекс 2або значення 68буде доміно число два і в матриці, яка знаходиться вгорі праворуч 4і знизу зліва 64 або4|64
  • приклад 3: індекс 5або значення 341буде числом п'ять доміно і в матриці, яка є1|4|16|64|256
  • приклад 4: індекс 9або значення 511буде числом дев'ять доміно, а в матриці його поєднанням усіх бітів.

Як тільки це буде встановлено , що це досить просте питання зациклення на 9 позицій в матриці, а також створення $xв 2до влади в$i

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

Тоді ми робимо побіжно І, &як ми повторюємо ці плями. Тож для прикладів заради використовувати приклад 2 зверху, а xзамість пробілів я використовуватиму пробіли для наочності:

  • ітерація 1, 68 & 1 ? 0 : 'x'результатом якої є'x'
  • ітерація 2, 68 & 2 ? 0 : 'x'результатом якої є'x'
  • ітерація 3, в 68 & 4 ? 0 : 'x'результаті якої0
  • ітерація 4, 68 & 8 ? 0 : 'x'результатом якої є'x'
  • ітерація 5, 68 & 16 ? 0 : 'x'результатом якої є'x'
  • ітерація 6, 68 & 32 ? 0 : 'x'результатом якої є'x'
  • ітерація 7, 68 & 64 ? 0 : 'x'результатом якої є0
  • ітерація 8, 68 & 128 ? 0 : 'x'результатом якої є'x'
  • ітерація 9, 68 & 256 ? 0 : 'x'результатом якої є'x'

Коли цикл завершений, ми завершуємо цей рядок "xx0xxx0xx".

Потім ми додамо кордон "---xx0xxx0xx"до нього (я на самому ділі почати з кордоном, але будь-який інший ) .

І нарешті ми chunk_split () це на 3-х для:

---
xx0
xxx
0xx

Сміливо повідомте мені, що ви думаєте.


Можна ще більше скоротити його, скориставшись оператором експоненції, **введеним у PHP 5.6 замість pow() php.net/manual/en/language.operators.arithmetic.php
Daniel

@Daniel - Спасибі збережено 5 байт! Я не знав, що вони додали, що я завжди намагаюся використовувати, ^але його побіт XOR ... lol
ArtisticPhoenix

Я не думаю, що вам дозволено друкувати додаткові рамки.
12Ме21

покажіть мені, де це навіть віддалено натякає на те, що в ОП.
ArtisticPhoenix

Я думаю, що це буде коротше $argv. Функція накладних витрат у PHP зазвичай становить 13 байт.
Тіт

6

Perl 5 , 107 76 70 + 1 ( -a) = 70 байт

Perl 5 , 70 байт

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

Спробуйте в Інтернеті!

Використовує 0 для пробілів та 1 для піпсів. Досить простий метод: зауважте, що коли цифра збільшується, коли піп "увімкнено", він ніколи не вимикається, за винятком того, що знаходиться посередині. У середньому положенні він увімкнено для всіх непарних чисел. Таким чином, для кожної позиції є простим питанням перевірити, чи є цифра більшою за останню цифру, для якої вона вимкнена. ||0Створює вихідний сигнал, коли умова помилкова. У Perl помилковим є те, undefщо виводиться як null.


4

JavaScript (ES6), 79 78 байт

Збережено 1 байт завдяки @ETHproductions

Вводить в синтаксис currying (a)(b)і виводить вертикальне доміно ASCII.

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

Демо


Горизонтальний варіант, 80 79 байт

Збережено 1 байт завдяки @ETHproductions

Приймає вхід як масив з двох цілих чисел і виводить горизонтальне доміно ASCII.

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

Демо


Приємно, дуже схоже на те, що я мав. Збережіть байт з будь-яким n>d|0або(+d?n>d:n)&1
ETHproductions

4

APL (Dyalog) , 25 байт

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

Спробуйте в Інтернеті!

-2 завдяки ngn .

Формат виходу трохи дивний: ця функція повертає масив, що містить два масиви форм-3,3, кожен з яких містить 0s та 1s.


перепишіть на -2 байти:2∘|(3 3⍴⊢,,∘⌽)¨>∘3 5 1 7¨
ngn

@ngn спасибі, це розумно: p
Ерік Вихідний


2

Javascript (ES6), 87 байт

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 Fruit

2

Haskell - 88 символів

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

Бере список двох чисел із зазначенням облич, повертає список списку bool. Не так коротко, але я вважаю рішення цікавим.


Ви можете просто використовувати mapзамість repeatі zipWith: map$(<$>[[(>4),(>5),(>1)],[(>7),odd,(>7)],[(>1),(>5),(>3)]]).map.flip($)Спробуйте його в Інтернеті!
Лайконі

Без точки зору економиться ще два байти: Спробуйте це в Інтернеті!
Лайконі

2

Піп , 32 27 24 21 байт

-3 байти завдяки @DLosc

FcgP[Yc>_M3517c%2RVy]

Спробуйте в Інтернеті!

Пояснення:

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
Вітаємо вас з виграшем піунтського щедрості! Тепер, коли період щедрості закінчився, я можу вам сказати: збережіть 3 байти, зіставивши зі скаляром 3517замість списку [3 5o7]. ;)
DLosc

1

> <> , 57 + 3 = 60 байт

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

Спробуйте це в Інтернеті . Виводить як вертикальне доміно з 1s для крапок, 0s для пробілу та 9s як роздільники:

001
000
100
999
111
111
111

Технічно це може бути розширено до 12 введених значень.

Стара версія:

> <> , 76 + 3 = 79 байт

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

Спробуйте це в Інтернеті . Виводить як вертикальне доміно з 1s для крапок і 0s як пробіл:

001
000
100
---
111
111
111

1

Вугілля деревне , 46 44 43 39 байт

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

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Пояснення:

EE²℅§@APQTUVW^_N

Прочитайте два цілих числа та складіть їх у таблиці пошуку. Потім картографуйте результат. (Це ефективно фіксує результат тимчасово.)

  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

Потім результати неявно друкуються окремими рядками з додатковою порожньою лінією між кожним обличчям, оскільки результати вкладені.

M⁵↑⁵

Просуньтесь вгору і намалюйте роздільну лінію між гранями.

Попередня 43-байтова горизонтальна версія:

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

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Пояснення:

Працюйте вертикально.

P³

Роздрукуйте роздільну лінію.

M⁷←

Позиція до початку першого обличчя.

FE²℅§@APQTUVW^_N

Прочитайте два цілих числа та складіть їх у таблиці пошуку.

F⁹«

Підготуйтеся до виходу до 9 oс.

F¬﹪κ³⸿⸿

Але запускайте новий стовпець кожні три oс.

§ o÷ιX²↔⁻⁴κ

Перетворіть нижні 5 біт коду ASCII у двійковий код, а потім віддзеркалюйте висновок протягом решти 4 oс.


Формат виводу досить ліберальний, що має заощадити кілька байт.
Денніс

1
Що це за чаклунство
ArtisticPhoenix

@Dennis Насправді оригінальний формат виводу є найбільш корисним, оскільки він автоматично дає мені можливість провести лінію поділу.
Ніл

О боже, є два Ніла.
Zacharý

2
@ Zacharý Насправді за даними сторінки користувачів вісім, або 40, якщо ви включаєте людей, чиї імена містять Ніл ...
Ніл

1

Желе , 16 байт

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

Спробуйте в Інтернеті!

Використовували стратегію Ніла та декомпресію бази для отримання значень; виводить у вигляді двійкового масиву. Приймає список як вхідний.

Пояснення:

Ç€
 € 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 байт

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

Відредаговано відповідно до коментаря Адама, спасибі, працює з нульовим початком індексу.

Підказки для введення екрана як вектор цілих чисел по одному для кожного обличчя.

Вихід має форму:

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

для входів 7 3та0 5

Пояснення:

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

Чому б не використати, ⎕IO←0щоб врятувати себе 1+?
Adám

@Adam Чому б не справді - лінивий;)
Грем

0

Python 2 , 121 байт

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

Спробуйте в Інтернеті!

Зменшено до 121 за допомогою лямбда після повернення та повторного читання правил. Тепер виводиться список рядків.

Попередня версія з добре відформатованим виходом:

Python 2 , 156 153 147 141 байт

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

Спробуйте в Інтернеті!

-3 завдяки завдяки @NieDzejkob

Вводить введення у вигляді двох цілих чисел та виводить у вертикальному форматі з 0 = пробіл та 1 = крапка.



0

Pyt , 220 154 байт

Друга спроба (154 байти)

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

Пояснення:

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



Перша спроба (220 байт):

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

Пояснення:

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


Спробуйте в Інтернеті!


0

05AB1E , 34 байти

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

Спробуйте в Інтернеті!


Це було важко, тому що 05AB1E має погані накладки.


Основне пояснення:

  • Тут є 4 значущі закономірності, які складають 2, 4, 6 та 8.
  • 3,5,7 та 9 - інші схеми плюс 1.
  • 1 не є значним через симетрію, якщо вхід рівний, віднімаємо 1, щоб перемикати середній біт.
  • Перемикання LSB дозволяє перевертати середній біт через дзеркальне відображення.

0

SmileBASIC, 92 69 байт

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

Приклад:

? 7,2
111
010
111
777
001
000
100

Це те, що відбувається, коли ваші правила недостатньо суворі.


0

ФАЛЬСЕ, 116 80 78 70 69 66 63 61 59 58 байт

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

все ще працює над цим ...


0

Фішка ,142 135 байт

! 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

Спробуйте в Інтернеті!

Введення - це рядок цифр. Використовує нулі як піпси. Малює піпси на одне число, читає наступний вхідний байт. Якщо немає наступного байту, завершіть, інакше намалюйте дільник і перейдіть до початку.

Кожному Z(або z) відповідає один символ виводу, вони розташовуються для стрільби в порядку зверху вниз. Капіталізуються A, B, Cі Dвідповідають низьким чотири біта введення (це все , що ми дивимося на, так "34" == "CD" == "st" ...). У нижньому регістрі b, d, e, fвідповідають різним бітам виходу.

Може також робити доміно безмежної довжини; спробуйте дати 0123456789як вхід.



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.