ASCII Кубик Рубика


12

Вдохновлен этим и следующим чатом:

вдохновение

Ваша задача - вывести следующее:

   _ _ _
  /_/_/_/\
 /_/_/_/\/\
/_/_/_/\/\/\
\_\_\_\/\/\/
 \_\_\_\/\/
  \_\_\_\/

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

Это , поэтому выигрывает самый короткий ответ в байтах!



3
Связанный. (А также, что более касательно, несколько других проблем, которые вы можете найти при поиске «алмазной плитки».)
Мартин Эндер,

7
10 часов в Песочнице (особенно с одним upvote) вряд ли достаточно. Я бы рекомендовал подождать не менее 48 часов.
Дада

9
Чтобы объяснить мой отрицательный голос: мне не очень нравятся вызовы, потому что изображение занимает много места, и я чувствую, что вы больше пытаетесь показать забавный образ, чем сделать хороший вызов (даже больше, поскольку шаблон не не так, как на картинке) (и я вполне уверен, что это привлечет некоторые отклики от людей, которые только смеялись над картиной). Кроме того, «вывести эту точную строку» с помощью строки, которая выглядит более или менее, чем эта, была сделана несколько раз, и я не вижу, насколько ваша задача отличается настолько, чтобы быть интересной.
Дада

4
@StephenS Я дал +1, но я не согласен с тем, что вы можете сказать то же самое для любого вызова KC, когда я делаю вызов KC, я стараюсь сделать шаблон несколько сложным (чтобы уголь не просто автоматически выигрывал), я делаю более длинные шаблоны, так что у языков, которые могут лучше обрабатывать циклы, есть шанс (например, JS), и я пытаюсь использовать вещи, которые могут быть встроены в некоторые языки, такие как алфавит, задачи KC сильно различаются, и попытка сказать, что они все одинаковые, требует чего-то подальше от категории.
LiefdeWen

Ответы:



11

Древесный уголь , 28 23 байта

F³⁺⁺×\_³×\/⁻³ι¶ ‖M↑×_ ³

Попробуйте онлайн! Ссылка на подробную версию кода. Не очень уголь-я знаю. Я не осознавал, что ‖M↓сознательно перемещает курсор, поэтому я сначала попытался, но F³«P⁺×/_³×/\⁻³ι↗»‖M↓×_ ³это не сработало, потому что я пытался сделать это с ног на голову. Если вы хотите что-то более угольное, попробуйте G↗³←⁶↘³/\¶\/G↖³←⁷↘³_\¶\_↘‖M↑×_ ³32 байта: попробуйте онлайн!



5

> <> , 97 94 93 89 байт

">knknknk//>k>knknknk/>k>k>knknknkk>k>k>n>n>n>k>k>n>n>n>/k>n>n>n>//n/n/n///"01.
of-

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

Редактировать 3: понял, что вы можете использовать символ "" (ascii 25) - теперь процесс просто снимает 15 с каждого элемента стека и печатает. Также удалены дополнительные инструкции по направлению и заменены все на 1 ход (01.)



4

Хвост, 99 байт

#!/bin/tail -n+2
    _ _ _
  /_/_/_/\
 /_/_/_/\/\
/_/_/_/\/\/\
\_\_\_\/\/\/
 \_\_\_\/\/
  \_\_\_\/

1
Добро пожаловать в PPCG!
Стивен

Или #!/bin/sed 1dвариант
калибр

4

Python 3 , 98 94 байта

@KevinCruijssen предложил это ...

-4 байта благодаря @HyperNeutrino и @WheatWizard

Выходное аппаратное решение:

print(r"""   _ _ _
  /_/_/_/\
 /_/_/_/\/\
/_/_/_/\/\/\
\_\_\_\/\/\/
 \_\_\_\/\/
  \_\_\_\/""")

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

или 98 байт:

print("   _ _ _\n  /_/_/_/\\\n /_/_/_/\/\\\n/_/_/_/\/\/\\\n\_\_\_\/\/\/\n \_\_\_\/\/\n  \_\_\_\/")

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


Python 3 , 139 байт

Dumb Python 3 Non-Hardcoding sumbmission, уверен, что его можно сыграть в гольф. Удивительно, но сжатие двух forс одним циклом дольше:

p=print;p(' '*3+"_ "*3)
for i in range(3):p(abs(2-i)*' '+'/_'*3+'/'+i*"\/"+'\\')
for i in range(3):p(i*' '+'\\_'*3+'\\'+"/\\"*abs(2-i)+'/')

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

Python 3 , 140 байт

print(' '*3+"_ "*3,'\n'+'\n'.join(abs(2-i)*' '+'/_'*3+'/'+i*"\/"+'\\'if i<3else (i-3)*' '+'\\_'*3+'\\'+"/\\"*abs(i-5)+'/'for i in range(6)))

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


1
Хм .. не жестко ли кодировать вывод короче? Даже с экранированными слешами в Java 8 / C # / JavaScript это 112 байтов .
Кевин Круйссен,

@KevinCruijssen Это на самом деле>. <... Боже, я такой тупой
мистер Xcoder

1
Теперь у меня много возможностей для игры в гольф ...
Mr. Xcoder




3

Java 8, 112 байт

o->"   _ _ _\n  /_/_/_/\\\n /_/_/_/\\/\\\n/_/_/_/\\/\\/\\\n\\_\\_\\_\\/\\/\\/\n \\_\\_\\_\\/\\/\n  \\_\\_\\_\\/"

Жестко закодированный вывод.

Попробуй это здесь.


Могу ли я отредактировать жестко закодированные части JS и C # в ваш ответ?
LiefdeWen

Хорошо, вы можете сохранить 5 байтов на C # с дословным литералом, o=>@"...а затем заменить \nего реальным переводом строки.
LiefdeWen

2

C #, 86 байт

o=>@"   _ _ _
  /_/_/_/\
 /_/_/_/\/\
/_/_/_/\/\/\
\_\_\_\/\/\/
 \_\_\_\/\/
  \_\_\_\/"

Попробуй это здесь.


Испытывающий. Найден чуть меньший общий размер (верхний + нижний колонтитул + код), но заменяется меньший верхний / нижний колонтитул на немного больший, чем у вас: попробуйте онлайн!
Марк Рейхон

@MarkRejhon К сожалению, это основная часть, которая считается с программой или функцией по умолчанию. ;) С добавлением o=>{} было бы 98 байт в вашем случае.
Кевин Круйссен,

2

Сетчатка , 59 байт


   _¶  /_/\¶ /_/V\¶/_/VV\¶\_VVV¶ \_VV¶  \_V
._
$&$&$&
V
\/

Попробуйте онлайн! Пояснение: На первом этапе просто создается следующее:

   _
  /_/\
 /_/V\
/_/VV\
\_VVV
 \_VV
  \_V

Второй этап затем расширяет все _s, повторяя их и предыдущий символ 3 раза, в то время как третий этап превращает Vs в \/s.


2

PHP , 77 байт

<?=strtr('   _ _ _
  0\
 01\
011\
2111
 211
  21',["/_/_/_/","\/","\_\_\_"]);

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


1
Сохраните 4 байта: попробуйте онлайн!
Нил

1
@Neil Спасибо и дополнительные 2 байта сохранены
Йорг Хюльсерманн

Это всегда здорово, когда вы можете превзойти буквальный вывод!
Нил

2

05AB1E , 34 31 байт

„_ 3×Âð'/:3F„/\«∞2ä`RˆD}\)¯R«.c

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

объяснение

„_ 3×             # push the string "_ _ _ "
     Â            # push a reversed copy
      ð'/:        # replace spaces with slashes
3F                # 3 times do
  „/\«            # append "/\"
      ∞           # mirror
       2ä`        # split into 2 separate parts on stack
         Rˆ       # reverse the second part and push to global list
           D      # duplicate the remaining part
            }     # end loop
\)                # discard the last copy and wrap stack in a string
  ¯R              # push the global list and reverse it
    «             # append to the rest of the list
     .c           # pad lines to equal length

Альтернативное 31-байтовое решение

„ _3×3FDð'/:„/\«∞2ä`R.Á})ÀÀÀ.c¦

ÀÀÀв той альтернативной версии [O_O"]...
Волшебная Урна Осьминога

@MagicOctopusUrn: Да ... Я не нашел более короткого способа сделать или обойти это: P
Emigna

1
Я согласен, я провел пару минут, пытаясь тоже; я никак не могу увидеть xD.
Волшебная Урна Осьминога

2

CSS, 225 223 байта

-2 байта благодаря Стивену S, лишние пробелы удалены

Я не совсем уверен, считается ли это, потому что CSS на самом деле не является языком программирования, но технически CSS может быть автономным, поскольку <html>элемент генерируется автоматически, если его нет.

html:after{content:'   _ _ _ \A   /_/_/_/\005c\A  /_/_/_/\005c/\005c \A /_/_/_/\005c/\005c/\005c \A \005c_\005c_\005c_\005c/\005c/\005c/ \A  \005c_\005c_\005c_\005c/\005c\/\A   \005c_\005c_\005c_\005c /';white-space: pre;}

А вот версия с моноширинным шрифтом, 247 246 байт .

-1 байт благодаря Стивену S, лишние пробелы удалены

html:after{font-family:'Courier';content:'   _ _ _ \A   /_/_/_/\005c\A  /_/_/_/\005c/\005c \A /_/_/_/\005c/\005c/\005c \A \005c_\005c_\005c_\005c/\005c/\005c/ \A  \005c_\005c_\005c_\005c/\005c\/\A   \005c_\005c_\005c_\005c /';white-space: pre;}


Я думаю, что вы можете удалить некоторые пробелы в CSS вокруг :s и {}s
Стивен

2

05AB1E , 35 32 31 байт

"/ _\"•₁7æ¤ÝI}?ÕR&Ü•4вè4ôJ€∞ø¨»

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

100% другой метод, чем в Эмигне.


Редактировать: если я начну с уже транспонированного шаблона, я могу вырезать 3 байта.


"/ _\"            # Push ASCII-art characters used.
•₁7æ¤ÝI}?ÕR&Ü•4в  # Push transposed version of base-4 pattern.
è                 # Replace all digits in base-4 number with appropriate symbol.
 4ô               # Split into groups of 4.
   J              # Join together.
    €∞            # Mirror each row (technically column).
      ø           # Transpose back.
       ¨»         # Remove the extra "_ _ _", and print with newlines.

1

JavaScript (ES6), 95 байт

_=>String.raw`   _ _ _
  /_/_/_/\
 /_/_/_/\/\
/_/_/_/\/\/\
\_\_\_\/\/\/
 \_\_\_\/\/
  \_\_\_\/`

JavaScript (ES6), 103 94 байта

-9 байт благодаря @Shaggy

_=>`   _ _ _
  ${a=`/_/_/_/\\`}
 ${a}/\\
${a}/\\/\\
${b=`\\_\\_\\_\\/`}\\/\\/
 ${b}\\/
  ${b}`

JavaScript (ES6), 106 байт

_=>`   _ _ _
  /_/_/_/\\
 /_/_/_/\\/\\
/_/_/_/\\/\\/\\
\\_\\_\\_\\/\\/\\/
 \\_\\_\\_\\/\\/
  \\_\\_\\_\\/`


@ Shaggy duh, я знал это, даже использовал это недавно. Благодарность!
Стивен


@JoshuaBell, не стесняйтесь опубликовать это как ваш собственный ответ, это определенно не мой гольф :) (это также очень изобретательно)
Стивен

1

Рубин, 72 70 байт

7.times{|i|puts' '*(j=i^i/4+3)+'_ \_/_'[-i/3*2,2]*3+'/\/'[i/4,2]*j^=3}

Последнее редактирование: избегайте дублирования \, заключая строки ''вместо "".

Ungolfed (обратите внимание, что в Ruby оборачиваются отрицательные строковые индексы. -1Это последний символ.)

7.times{|i|                       #7 lines.
  puts" "*(j=i^i/4+3)+            #Print j= 3,2,1,0, 0,1,2 spaces.
      "_ \\_/_"[-i/3*2,2]*3+      #Print 3 repeats of 2 characters from the string, index 0,-2,-2,-2,-4,-4,-4.
      "/\\/"[i/4,2]*j^=3          #Print 2 characters from the string, /\ or \/, repeated 3^j times.
}

1

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

@echo    _ _ _
@echo   /_/_/_/\
@echo  /_/_/_/\/\
@echo /_/_/_/\/\/\
@echo \_\_\_\/\/\/
@echo  \_\_\_\/\/
@echo   \_\_\_\/

Довольно самообследование.


1

Brainf * ck 387 байт

Даже не уверен, что это все-таки вещь, но мне было скучно, и я сделал это из-за дерьма и хихиканья :)

++++++++[->++++>++++>++++>++++<<<<]+++++[->>+++>+++>+++<<<<]<+++[->+++++<]>[->>>+++>+++<<<<]>>>>+++<<<...<+++[->.>>>.<<<<]<<++++++++++>+++++++++++++.<.>>>..>.<<+++[->>>>.<<.<<]>>>.<<<<.<.>>>.>.<<+++[->>>>.<<.<<]>>>.<.>.<<<<.<.>>>>.<<+++[->>>>.<<.<<]>>>.<.>.<.>.<<<<.<.>>>>>.<<<+++[->>>>.<.<<<]>>.>.<.>.<.<<<.<.>>>.>>.<<<+++[->>>>.<.<<<]>>.>.<.<<<.<.>>>..>>.<<<+++[->>>>.<.<<<]>>.<<<.<.>>

Изменить: TIL: я на 54,28% более эффективен, чем какой-то генератор, который я нашел в сети ^. ^

Edit2: попробуйте онлайн Убедитесь, что Wrap включен для поведения переполнения памяти в настройках


1

КОБОЛ, 238 байт

Составлено с открытым коболом. Обратите внимание, что отступ - это одна вкладка, а не пробелы, даже если этот сайт форматирует ее таким образом.

    IDENTIFICATION DIVISION.
    PROGRAM-ID. a.
    PROCEDURE DIVISION.
    DISPLAY "   _ _ _".
    DISPLAY "  /_/_/_/\".
    DISPLAY " /_/_/_/\/\".
    DISPLAY "/_/_/_/\/\/\".
    DISPLAY "\_\_\_\/\/\/".
    DISPLAY " \_\_\_\/\/".
    DISPLAY "  \_\_\_\/".
    STOP RUN.


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