Спробуйте зробити кубик!


16

Виходячи з цього: Зробіть мені квадрат!

Вам потрібно вивести це:

  ####
 # # #
###  #
# # #
####

Де "#" замінено на вхід.

Якщо ви введете "A", ви повинні отримати

  AAAA
 A A A
AAA  A
A A A
AAAA

Якщо ви введете "&", ви повинні отримати

  &&&&
 & & &
&&&  &
& & &
&&&&

Таблиця лідерів

Ось фрагмент стека для створення як звичайного табло, так і огляду переможців за мовою.


5
Ну, це дещо схоже, хоча принаймні це не 3-байтова відповідь у "
Ніл

1
Чи можуть останні два рядки мати провідні пробіли і чи може результат мати провідні рядки?
dzaima

3
B³S‖O↗це може бути дуже близьким до 10-байтового відповіді у вугіллі, хоча ... я просто не знаю мови досить добре, щоб це зробити, дійсно повинна бути така сторінка, як для вугілля.
Чарівна восьминога урна


6
Я не бачу, як це дуп квадратного
Луїс Мендо

Відповіді:


19

Морква , 31 байт

  ####
 # # #
###  #
# # #
####

#s замінюються на вхід.

В основному це відповідь на цю проблему.


40
схоже, що на гольф пішло години ...
Cyoce

@KritixiLithos 200 представників, тому що ви зробили круту мову, це не здається справедливим xD
Стівен

13

05AB1E , 16 15 байт

ð‚•nxвΛ•2вèJ6ô»

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

Пояснення

ð‚                # push the list [<input>,<space>]
  •nxвΛ•          # push the number 816342339
        2в        # convert to list of base 2 digits
          è       # index into the the 2-char string with this list
           J      # join to string
            6ô    # split into pieces of length 6
              »   # join on newlines

1
Чи можете ви закодувати новий рядок у списку / номері, щоб зберегти останні 3 байти?
Прут

@Rod Це було б набагато більша кількість, принаймні 6 байт, плюс додатковий байт або два, щоб включити новий список у список ...
ETHproductions

@Rod: Ви могли б зробити що - щось на зразок цього . На жаль, це виходить трохи довше. Хороша ідея, хоча.
Емінья

1
•nxвΛ•bTRð¹ì‡6ô»... твої удари трішки транслітеруються, лише завдяки вимогам замовлення; якби я міг розібратися із способом неявного прийняття вводу та генерування рядка 01в 1-байті, це було б 13/14-байтним рішенням.
Чарівна восьминога урна

1
@carusocomputing •nxвΛ•bT𹫇6ô»або ð«T•nxвΛ•br‡6ô»однакової довжини.
Емінья

10

Cubix , 62 байти

./v<.o;.@?/;w.w;i:::::NrSs::SrSuUS::sN::rS:r:srNr:SrSsNs:::SSv

Спробуйте в Інтернеті! і дивіться перекладача!

Це вписується в 4-куб:

        . / v <
        . o ; .
        @ ? / ;
        . . w ;
i : : : : : N r S s : : S r S u
U S : : s N : : r S : r : s r N
r : S r S s N s : : : S S v . .
. . . . . . . . . . . . . . . .
        . . . .
        . . . .
        . . . .
        . . . .

Я не дуже добре маніпулюю напрямком вказівного інструменту, тому буду продовжувати пробувати та гольфувати це. І це, і моя відповідь тут базуються на "Привіт, світ!" Приклад програми, що використовує ./v.o;@?/(на 3-кубі) для рекурсивного друку та виведення символів на стеку, тому решта коду просто натискає символів на стек у потрібному порядку.

Зараз я зробив кубик на кубику, тому я можу легко відпочити (і виконати свою фактичну роботу).


9

SOGL , 13 10 байт

Βū&⁵'r⁹‘6n

Пояснення:

Βū&⁵'r⁹‘    push "  ŗŗŗŗ ŗ ŗ ŗŗŗŗ  ŗŗ ŗ ŗ ŗŗŗŗ", where "ŗ" is replaced with input
        6n  split into lines of length 6

1
Як це сидить на 0? Можливо, через відсутність TIO ._. +1
Чарівна восьминога урна

Я думаю, що там буде (сподіваємось) більшість 1 ще більше оновлених речей, і тоді я подумаю про якусь дію, що працює в Інтернеті
dzaima

6
Син мови про гольф?
ETHproductions

@ETHproductions lol
dzaima

Гольф-орієнтована мова для
гольфу

9

MATL , 13 10 байт

Дякую Конору О'Браєну за те, що він видалив 3 байти, а також показав мені, що в Octave можна використовувати недруковані версії.

Код містить недруковані символи. Спробуйте в Інтернеті!

Пояснення

'....'   % Push 5-char string (contains unprintables). Each char encodes a row
         % of the desired pattern
B        % Convert to binary. Gives a 5×6 binary matrix with the pattern
*        % Implicit input. Multiply element-wise (converts input to ASCII code)
c        % Convert to char. Implicitly display. Char 0 is shown as space

Ви можете зробити це 10 байтів, якщо не в порядку з недрукованими файлами. Спробуйте в Інтернеті!
Conor O'Brien

@ ConorO'Brien Ей, дякую! Я не був впевнений, що Октав не в порядку з тими ... як ти їх навіть набрав?
Луїс Мендо

Ну, я, чесно кажучи, взяв номери, перетворив їх на шістнадцятковий, потім зробив echo 0f15392a3c|xxd -r -p|clip. На вікнах clip- буфер обміну. Тоді я просто вставив їх: P (Якщо ви знаходитесь у командному рядку, це ^O^Uтак само)
Conor O'Brien

@ ConorO'Brien Це над головою. Ви дійсно повинні опублікувати це як свою відповідь
Луїс Мендо

Він використовує таку ж тактику, що і ваша, просто усуваючи потребу в модулі 64, використовуючи значення безпосередньо.
Conor O'Brien


6

Japt , 20 байт

"OUyj|"®c ¤Åd0S1U +R

Перевірте це в Інтернеті!

Не надто погано для мови без вбудованого стиснення (ну, крім стискання рядків малих літер) ...

Пояснення

У двійковій формі п'ять символів у рядку:

O 1001111
U 1010101
y 1111001
j 1101010
| 1111100

Відріжте початковий 1від кожного, і ви отримаєте шаблон для куба.

"OUyj|"®   c ¤  Å  d0S1U +R
"OUyj|"mZ{Zc s2 s1 d0S1U +R}  // Expanded
                              // Implicit: U = input string
"OUyj|"mZ{                 }  // Replace each character Z in this string with this function:
          Zc                  //   Take the char-code of Z.
             s2               //   Convert to a binary string.
                s1            //   Slice off the first character (always a "1").
                   d0S1U      //   Replace "0"s with spaces and "1"s with the input.
                         +R   //   Append a newline.
                              // Implicit: output result of last expression

Я спробував шаблонний підхід ( llможна стиснути), але це на 11 байт довше.
Лука

Приємно. Я знизився до 23 байтів, перш ніж зрозумів, що зробив з нього кульки!
Кудлатий

6

LOLCODE, 202 170 байт

I HAS A c
GIMMEH c
VISIBLE"  "AN c AN c AN c AN c AN":) "AN c AN" "AN c AN" "AN c AN":)"AN c AN c AN c AN"  "AN c AN":)"AN c AN" "AN c AN" "AN c AN":)"AN c AN c AN c AN c

У LOLCODE не так багато для гольфу ...

Це встановлює змінну cу вхід і створює гігантський зв'язаний рядок, що включає :)нові рядки. Ось про це.


expected HAI at: I tio.run/nexus/…
eush77

Також VISIBLEнеявно об'єднується, тож ви можете видалити SMOOSH tio.run/nexus/lolcode#@@/…
eush77

До першої речі, є деякі перекладачі, які не вимагають HAI або KTHXBYE, наприклад REPL.it. До вашого другого, дякую!
OldBunny2800



5

Збірка Z80, машинний код 37 байт

Припустимо пристрій, вбудований в пам'ять, нанесений на пам'ять:

; НЕ ВСТАВУЙТЕ ПРОСТОРИ, інакше він потрапить у нескінченні місця друку та нові рядки!

3A xx xx ld a, (вхід); отримати вхідний символ
11 0A 20 ld de, 200ah; простір та новий рядок
21 yy yy ld hl, вихід; отримати вихідну адресу
4F ld c, a; поставити характер у c
петля:
72 ld (hl), d; вихідний простір * 2 | вихідний символ * 2
72 ld (hl), d
77 ld (hl), a; вихідний символ | вихідний символ
71 ld (hl), c; вихідний символ * 2 | вихідний простір * 2
71 ld (hl), c
77 ld (hl), a; вихідний символ | вихідний символ
73 ld (hl), e; вихідний рядок | вихідний рядок
72 ld (hl), d; вихідний простір | вихідний символ
71 ld (hl), c; вихідний символ | вихідний простір
72 ld (hl), d; вихідний простір | вихідний символ
71 ld (hl), c; вихідний символ | вихідний простір
72 ld (hl), d; вихідний простір | вихідний символ
B9 cp c; встановити нульовий прапор 1-й раз | ясно 2-й раз
20 06 jr nz, кінець; пропустити до кінця
77 ld (hl), a; вихідний символ
73 ld (hl), e; вихідний рядок
4A ld c, d; помістити простір в c
57 ld d, a; поставити характер у d
28 FB jr z, петля; петлю до 2-го разу
кінець:
73 ld (hl), e; вихідний рядок
77 ld (hl), a; вихідний символ * 4
77 ld (hl), a
77 ld (hl), a
77 ld (hl), a
76 зупинка; або C9 ret


4

PHP, 72 байти

Я зробив цей лише для задоволення, оскільки вже є краща відповідь PHP.

for($i=0;$i<27;)echo('00'.decbin(64349871))[$i]?$argn:' ',++$i%6?'':'
';

Куб малюється, отримуючи бінарне значення 64349871, об'єднане '00'.
Це повертає наступне:

0011110101011110011010101111

Кожен шостий символ я вивожу новий рядок, в результаті чого:

001111
010101
111001
101010
1111

І замість відображення 0відображає пробіл, який буде мати вигляд:

  1111
 1 1 1
111  1
1 1 1 
1111

4

Вугілля , 17 16 байт

SβGH7+↗→³β→G↓↙³β

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Довше, ніж я хотів, щоб це було, бо «кубик» трохи ширший, ніж високий чи глибокий. На щастя, деякі багатонаправлені символи працюють з PolygonHollow, що заощаджує мені 3 байти. Редагувати: Збережено подальший байт, використовуючи + замість T ↑. Пояснення:

Sβ          Input the character
GH7+↗→³β    Draw the left half. 7 becomes ←↙ and + becomes →↓←↑.
→           Move right one character.
G↓↙³β       Draw the right half.

На момент виклику qзмінна не працювала у багатослівному режимі, інакше я міг би створити цю 14-байтну версію:

GH7+↗→³θ→G↓↙³θ

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


3

Складено , 31 байт

' '\+$'9*<'#.2 tb[6 dpad]map#

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

Ось шістнадцятковий набір:

λ xxd try-to-make-a-cube.stk
00000000: 2720 275c 2b24 270f 1539 2a3c 2723 2e32  ' '\+$'..9*<'#.2
00000010: 2074 625b 3620 6470 6164 5d6d 6170 23     tb[6 dpad]map#

Це перетворює масив символів у двійковий, прокладки кожного рядка до довжини 6та індексує його відповідно до рядка' ' input +




1

C (gcc) , 90 84 байт

i;v;f(g){for(i=32;i--;)putchar((v="####*@#@#@#*#@@###*#@#@#@*####@@"[i])&1?g:v-32);}

Спробуйте в Інтернеті! Визначає функцію, fяка приймає символ g. Шкода, що кодування таблиці безпосередньо є коротшою ...

Стара версія, 90 байт

(Досі намагаюся пограти у цей гольф)

Намагаються мати лише одиноку putchar, але idk. Існують недруковані версії, тому ось шестинадцять:

λ xxd try-to-make-a-cube.c
00000000: 693b 6a3b 6628 6729 7b63 6861 722a 6b3d  i;j;f(g){char*k=
00000010: 220f 1539 2a3c 223b 666f 7228 693d 303b  "..9*<";for(i=0;
00000020: 693c 353b 7075 7463 6861 7228 3130 292c  i<5;putchar(10),
00000030: 692b 2b29 666f 7228 6a3d 3332 3b6a 3b6a  i++)for(j=32;j;j
00000040: 2f3d 3229 7075 7463 6861 7228 6b5b 695d  /=2)putchar(k[i]
00000050: 266a 3f67 3a33 3229 3b7d                 &j?g:32);}

Це кодує куб у двійковій таблиці пошуку, де 1біт представляє вхід, а 0біт - пробіл.Спробуйте в Інтернеті!


Можна голити кілька байт на 81 байт .
гастропнер

Недруковані можна видавити до 73 байт .
гастропнер


1

Свіфт - 82 байти + фундамент (18 байт)?

var f={"  ####\n # # #\n###  #\n# # #\n####".replacingOccurrences(of:"#",with:$0)}

За замовчуванням у Xcode-Swift є Whole-Module Optimizationтакі проекти , що import Foundationне потрібно для цієї простої лямбда-функції. Однак для його запуску в онлайн-середовищі потрібна ця програма, яка може додати 18 байт.

Перевір!



0

CJam, 23 байти

"pjFUC"{i2b(;}%rS+ff=N*

Я відчуваю, що я все ще можу це пограти в гольф.

"pjFUC" e# String literal:          │ "pjFUC"
{       e# For each:                │ 'p
  i     e#   Get code point:        │ 112
  2b    e#   To binary:             │ [1 1 1 0 0 0 0]
  (;    e#   Delete first:          │ [1 1 0 0 0 0]
}%      e# End                      │ [[1 1 0 0 0 0] [1 0 1 0 1 0] [0 0 0 1 1 0] [0 1 0 1 0 1] [0 0 0 0 1 1]]
r       e# Read token:              │ [[1 1 0 0 0 0] [1 0 1 0 1 0] [0 0 0 1 1 0] [0 1 0 1 0 1] [0 0 0 0 1 1]] "&"
S       e# Push space:              │ [[1 1 0 0 0 0] [1 0 1 0 1 0] [0 0 0 1 1 0] [0 1 0 1 0 1] [0 0 0 0 1 1]] "&" " "
+       e# Concatenate:             │ [[1 1 0 0 0 0] [1 0 1 0 1 0] [0 0 0 1 1 0] [0 1 0 1 0 1] [0 0 0 0 1 1]] "& "
ff=     e# Vectorized array lookup: │ ["  &&&&" " & & &" "&&&  &" "& & & " "&&&&  "]
N*      e# Join with newlines       │ "  &&&&
        e#                          │   & & &
        e#                          │  &&&  &
        e#                          │  & & & 
        e#                          │  &&&&  "
e# Implicit output

0

постійного струму , 70 байт

Кодує послідовність досить безпосередньо, з незначною оптимізацією:

8224PdPdPdPdP10Pd8192+ddPPP10PdPdPdP8224PdP10Pd256*32+ddPPP10PdPdPdPdP

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


Винесена на (не дуже гофрировану) крайність, 145 байт:

27065671941896667324298575455432398417474802390765222440949482848513*56759961956005660143530475805610581704254588701249011343446231795984498688+P

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

Це обчислення A*x+B, де Aкодує позиції вхідного символу та Bкодує всі інші:

A = 256 0 + 256 1 + 256 2 + 256 3 + 256 5 + 256 7 + 256 9 + 256 11 + 256 14 + 256 15 + 256 16 + 256 18 + 256 20 + 256 22 + 256 25 + 256 26 + 256 27 + 256 28

B = 10 × 256 4 + 32 × 256 6 + 32 × 256 8 + 10 × 256 10 + 32 × 256 12 + 32 × 256 13 + 10 × 256 17 + 32 × 256 19 + 32 × 256 21 + 32 × 256 23 + 10 × 256 24 + 32 × 256 29 + 32 × 256 30

P команда друкує отримане число у вигляді байтового потоку.



0

Пакет Windows, 79 байт

@echo   %1%1%1%1
@echo  %1 %1 %1
@echo %1%1%1  %1
@echo %1 %1 %1
@echo %1%1%1%1

Спеціальний чар. безпечно, 97 байт:

@echo   ^%1^%1^%1^%1
@echo  ^%1 ^%1 ^%1
@echo ^%1^%1^%1  ^%1
@echo ^%1 ^%1 ^%1
@echo ^%1^%1^%1^%1

Чи можете ви використовувати канали ліній, тобто.. %1%1%1%1\n %1 %1 %1...
TheLethalCoder

Лінійні канали не підтримуються в пакетній
серії

Я не міг згадати, були вони чи ні, і не був у змозі перевірити :)
TheLethalCoder

Вибачте, я розгублений, можете повторити?
stevefestl

I couldn't remember if you could use them or not and I couldn't test at the time I commented so I left the comment so you would still have the idea
TheLethalCoder

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