Попробуйте сделать куб!


16

Исходя из этого: сделай мне квадрат!

Вам нужно вывести это:

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

Где «#» заменяется вводом.

Если вы введете «А», вы должны получить

  AAAA
 A A A
AAA  A
A A A
AAAA

Если вы введете «&», вы должны получить

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

Leaderboard

Вот фрагмент стека, который генерирует как регулярную таблицу лидеров, так и обзор победителей по языкам.


5
Ну, это немного похоже, хотя, по крайней мере, это не 3-байтовый ответ в Charcoal на этот раз ...
Нил

1
Могут ли последние две строки иметь начальные пробелы и может ли результат иметь начальные символы новой строки?
Дзайма

3
B³S‖O↗это очень хорошо , может быть близко к 10 байт ответа на угле , хотя ... Я просто не знаю языка достаточно хорошо , чтобы сделать это, действительно должно быть страница , как это , но для древесного угля.
Волшебная Урна Осьминога

5
@Alex Sandbox
xnor

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

@ Род: Вы могли бы сделать что-то вроде этого . К сожалению, это получается немного дольше. Хорошая идея, хотя.
Эминья

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

СОГЛ , 13 10 байт

Βū&⁵'r⁹‘6n

Объяснение:

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

1
Как это сидит на 0? Вероятно, из-за отсутствия TIO ._. +1
Волшебная Урна Осьминога

Я думаю, что будет (надеюсь), самое большее, еще 1 штука, нарушающая обновление, и тогда я подумаю о какой-то онлайн-
игре

6
Сын языка гольфа?
ETHproductions

@ETHproductions lol
dzaima

Строка Oriented Language гольфом
a'_»

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 байтов, если вы в порядке с непечатными. Попробуйте онлайн!
Конор О'Брайен

@ ConorO'Brien Эй, спасибо! Я не был уверен, что с этим Октавом все в порядке ... как ты вообще их печатал?
Луис Мендо

Честно говоря, я взял числа, преобразовал их в шестнадцатеричные, а затем сделал echo 0f15392a3c|xxd -r -p|clip. На окнах clipесть буфер обмена. Тогда я просто вставил их: P (Если вы в командной строке, это ^O^Uтоже)
Конор О'Брайен

@ ConorO'Brien Это над моей головой. Вы должны действительно опубликовать это как ваш ответ
Луис Мендо

Он использует ту же тактику, что и ваша, просто устраняя необходимость в модуле 64, используя значения напрямую.
Конор О'Брайен


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

Сед, 40 знаков

s/./  &&&&\
 & & &\
&&&  &\
& & &\
&&&&/

Почти читерство, поскольку описание задачи содержало его буквально.

Образец прогона:

bash-4.4$ sed 's/./  &&&&\
 & & &\
&&&  &\
& & &\
&&&&/' <<< 'C'
  CCCC
 C C C
CCC  C
C C C
CCCC

Попробуйте онлайн!



5

Сборка Z80, машинный код 37 байтов

Предположим, что устройство ввода-вывода с отображенной памятью:

; НЕ ВХОДИТЕ В ПРОСТРАНСТВО, иначе оно попадет в бесконечные циклы печати и новые строки!

3A xx xx ld a (вход); получить входной символ
11 0A 20 ld de, 200ah; пробел и перевод строки
21 гггг гг лд гл, выход; получить выходной адрес
4F ld c, a; поставить символ в с
цикл:
72 л.д. (гл.), Д; выходное пространство * 2 | выходной символ * 2
72 л.д. (гл), д
77 л.д. (гл.), А; выходной символ | выходной символ
71 л.д. (гл.), С; выходной символ * 2 | выходное пространство * 2
71 л.д. (гл.), С
77 л.д. (гл.), А; выходной символ | выходной символ
73 л.д. (гл), е; вывод новой строки | вывод новой строки
72 л.д. (гл.), Д; выходное пространство | выходной символ
71 л.д. (гл.), С; выходной символ | выходное пространство
72 л.д. (гл.), Д; выходное пространство | выходной символ
71 л.д. (гл.), С; выходной символ | выходное пространство
72 л.д. (гл.), Д; выходное пространство | выходной символ
B9 cp c; установить нулевой флаг 1 раз | очистить 2-й раз
20 06 мл, конец; пропустить до конца
77 л.д. (гл.), А; выходной символ
73 л.д. (гл), е; вывод новой строки
4A ld c, d; поставить место в с
57 лд д, а; поставить символ в д
28 FB jr z, петля; цикл во второй раз
конец:
73 л.д. (гл), е; вывод новой строки
77 л.д. (гл.), А; выходной символ * 4
77 л.д. (гл),
77 л.д. (гл),
77 л.д. (гл),
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#

Попробуйте онлайн!

Вот hexdump:

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



2

JS (ES6), 64 60 52 байта

i=>`  ####
 # # #
###  #
# # #
####`.replace(/#/g,i)

Можно ли это улучшить:

i=>`  ${y=i+i+i+i}
 # # #
###  #
# # #
${y}`.replace(/#/g,i)

1
y=i+i+i+iкорочеy=i.repeat(4)
Стивен

2
... и ####еще короче.
Арно

1
На самом деле все короче без шаблонов: скрипка
Стивен

1

C (gcc) , 90 84 байта

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

Попробуйте онлайн! Определяет функцию, fкоторая принимает символ g. Жаль, что кодирование таблицы напрямую короче ...

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

(Все еще пытаюсь играть в гольф в этом)

Попытка иметь только один putchar , но ИДК. Есть непечатаемые, поэтому вот hexdump:

λ 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

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

Я не мог вспомнить, могли ли вы использовать их или нет, и я не мог проверить в тот момент, когда я прокомментировал, поэтому я оставил комментарий, чтобы у вас все еще была идея
TheLethalCoder

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.