Cobalah membuat kubus!


15

Berdasarkan ini: Cobalah untuk membuat persegi!

Anda perlu menampilkan ini:

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

Di mana "#" diganti dengan input.

Jika Anda memasukkan "A", Anda harus mendapatkannya

  AAAA
 A A A
AAA  A
A A A
AAAA

Jika Anda memasukkan "&", Anda harus mendapatkannya

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

5
Yah, ini agak mirip, meskipun setidaknya ini bukan jawaban 3-byte di Charcoal kali ini ...
Neil

1
Dapatkah dua baris terakhir memiliki spasi terdepan dan dapatkah hasilnya memiliki baris baru yang memimpin?
dzaima

3
B³S‖O↗mungkin sangat dekat dengan jawaban 10 byte di arang meskipun ... Saya hanya tidak tahu bahasa dengan cukup baik untuk melakukannya, benar-benar perlu ada halaman seperti ini tetapi untuk arang.
Magic Gurita Guci

5
@Alexlex Sandbox
xnor

6
Saya tidak melihat bagaimana ini adalah penipuan dari alun-alun
Luis Mendo

Jawaban:


18

Wortel , 31 byte

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

#s digantikan oleh input.

Pada dasarnya port jawaban ini , untuk masalah ini.


39
yang sepertinya butuh berjam-jam untuk golf ...
Cyoce

@KritixiLithos 200 rep karena Anda membuat bahasa yang keren, ini sepertinya xD tidak adil
Stephen

12

05AB1E , 16 15 byte

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

Cobalah online!

Penjelasan

ð‚                # 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
Bisakah Anda menyandikan baris baru dalam daftar / nomor untuk menyimpan 3 byte terakhir?
Rod

@ Rad Itu akan menjadi angka yang jauh lebih besar, setidaknya 6 byte, ditambah satu atau dua byte tambahan untuk memasukkan baris baru dalam daftar ...
ETHproduksi

@Rod: Anda bisa melakukan sesuatu seperti ini . Sayangnya itu ternyata sedikit lebih lama. Ide bagus.
Emigna

1
•nxвΛ•bTRð¹ì‡6ô»... denyut ketukan Anda sedikit, hanya karena persyaratan pemesanan; jika saya dapat menemukan cara untuk secara implisit mengambil input dan menghasilkan string 01dalam 1-byte, ini akan menjadi solusi 13/14 byte.
Magic Gurita Guci

1
@caruscomputing •nxвΛ•bT𹫇6ô»atau ð«T•nxвΛ•br‡6ô»panjangnya sama.
Emigna

9

Cubix , 62 byte

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

Cobalah online! dan Perhatikan penerjemahnya!

Ini cocok untuk kubus 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 . .
. . . . . . . . . . . . . . . .
        . . . .
        . . . .
        . . . .
        . . . .

Saya tidak pandai memanipulasi arah petunjuk instruksi, jadi saya akan terus mencoba dan bermain golf ini. Baik ini maupun jawaban saya di sini didasarkan pada "Halo, Dunia!" contoh program menggunakan ./v.o;@?/(pada 3-kubus) untuk secara rekursif mencetak dan mengeluarkan karakter pada stack, sehingga sisa kode hanya mendorong karakter ke stack dalam urutan yang benar.

Saya sekarang telah membuat kubus di kubus, jadi saya bisa tenang (dan melakukan pekerjaan saya yang sebenarnya).


8

SOGL , 13 10 byte

Βū&⁵'r⁹‘6n

Penjelasan:

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

1
Bagaimana ini duduk di 0? Mungkin karena kurangnya TIO ._. +1
Guci Gurita Ajaib

Saya pikir akan ada di (semoga) paling banyak 1 pembaruan terbaru dan kemudian saya akan memikirkan beberapa hal yang sedang berjalan secara online
dzaima

6
Anak Dari Bahasa Golf?
ETHproduksi

@ETHproductions lol
dzaima

8

MATL , 13 10 byte

Terima kasih kepada Conor O'Brien karena menghapus 3 byte, dan karena menunjukkan kepada saya bahwa unsintables dapat digunakan dalam Octave.

Kode berisi karakter yang tidak patut dicetak. Cobalah online!

Penjelasan

'....'   % 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

Anda dapat membuat 10 byte ini jika Anda setuju dengan yang tidak diinginkan. Cobalah online!
Conor O'Brien

@ ConorO'Brien Hei, terima kasih! Saya tidak yakin Oktaf baik-baik saja dengan itu ... bagaimana Anda mengetiknya?
Luis Mendo

Yah, sejujurnya saya mengambil angka, mengubahnya menjadi hex, lalu melakukannya echo 0f15392a3c|xxd -r -p|clip. Di windows, clipada clipboard. Lalu saya hanya menempelkannya: P (Jika Anda berada di baris perintah, itu ^O^Ujuga)
Conor O'Brien

@ Conor'Brien Itu jauh di atas kepala saya. Anda harus benar-benar memposting itu sebagai jawaban Anda
Luis Mendo

Ia menggunakan taktik yang sama seperti milik Anda, hanya menghilangkan kebutuhan modulo 64 dengan menggunakan nilai-nilai secara langsung.
Conor O'Brien


6

Japt , 20 byte

"OUyj|"®c ¤Åd0S1U +R

Uji secara online!

Tidak terlalu buruk untuk bahasa tanpa kompresi bawaan (yah, kecuali mengompresi string huruf kecil) ...

Penjelasan

Dalam biner, lima karakter dalam string adalah:

O 1001111
U 1010101
y 1111001
j 1101010
| 1111100

Potong awal 1dari masing-masing, dan Anda mendapatkan pola untuk kubus.

"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

Saya mencoba pendekatan berbasis template ( lldapat dikompresi), tetapi 11 byte lebih lama.
Lukas

Bagus. Saya turun ke 23 byte sebelum saya menyadari saya telah membuat bola itu!
Shaggy

6

Z80 Assembly, 37 byte kode mesin

Asumsikan memori yang dipetakan perangkat I / O:

; JANGAN INPUT A SPACE atau itu akan masuk ke ruang pencetakan & baris baru tanpa batas!

3A xx xx ld a, (input); dapatkan karakter input
11 0A 20 ld de, 200ah; ruang & baris baru
21 yy yy ld hl, output; dapatkan alamat keluaran
4F ld c, a; masukkan karakter ke dalam c
lingkaran:
72 ld (hl), d; ruang output * 2 | karakter keluaran * 2
72 ld (hl), d
77 ld (hl), a; karakter keluaran | karakter keluaran
71 ld (hl), c; karakter keluaran * 2 | ruang output * 2
71 ld (hl), c
77 ld (hl), a; karakter keluaran | karakter keluaran
73 ld (hl), e; keluaran baris baru | output baris baru
72 ld (hl), d; ruang keluaran | karakter keluaran
71 ld (hl), c; karakter keluaran | ruang output
72 ld (hl), d; ruang keluaran | karakter keluaran
71 ld (hl), c; karakter keluaran | ruang output
72 ld (hl), d; ruang keluaran | karakter keluaran
B9 cp c; atur zero flag 1st time | jelas waktu ke-2
20 06 jr nz, akhir; lompat ke ujung
77 ld (hl), a; karakter keluaran
73 ld (hl), e; output baris baru
4A ld c, d; menempatkan ruang dalam c
57 ld d, a; masukkan karakter ke dalam d
28 FB jr z, loop; loop ke waktu ke-2
akhir:
73 ld (hl), e; output baris baru
77 ld (hl), a; karakter keluaran * 4
77 ld (hl), a
77 ld (hl), a
77 ld (hl), a
76 berhenti; atau ret C9

6

LOLCODE, 202 170 byte

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

Di LOLCODE, tidak banyak bermain golf ...

Ini menetapkan variabel cke dalam input, dan menciptakan string bersambung raksasa termasuk :)baris baru. Itu saja.


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

Juga, VISIBLEsecara implisit digabungkan, sehingga Anda dapat menghapus SMOOSH tio.run/nexus/lolcode#@@/…
eush77

Untuk hal pertama Anda, ada beberapa penerjemah yang tidak memerlukan HAI atau KTHXBYE, misalnya REPL.it. Untuk hal kedua Anda, terima kasih!
OldBunny2800

5

Sed, 40 karakter

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

Nyaris selingkuh karena deskripsi tantangan memuatnya secara harfiah.

Contoh dijalankan:

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

Cobalah online!



4

V , 27 byte

4äl2>>Äyvho3pÄÙ3älWx<<3Îd^

Cobalah online!

Hexdump:

00000000: 34e4 6c32 3e3e c479 7668 6f1b 3370 c4d9  4.l2>>.yvho.3p..
00000010: 33e4 6c57 783c 3c33 ce64 5e              3.lWx<<3.d^

Saya cukup yakin Anda dapat menggantinya o<esc>dengan hanyaï
Kritixi Lithos

4

PHP, 72 byte

Saya membuat ini hanya untuk bersenang-senang, karena sudah ada jawaban PHP yang lebih baik.

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

Kubus diambil dengan mendapatkan nilai biner dari 64349871, disatukan oleh '00'.
Ini mengembalikan yang berikut:

0011110101011110011010101111

Setiap karakter ke-6, saya mengeluarkan baris baru, menghasilkan ini:

001111
010101
111001
101010
1111

Dan, alih-alih menampilkan 0, ini menampilkan ruang, yang akan terlihat seperti:

  1111
 1 1 1
111  1
1 1 1 
1111

4

Arang , 17 16 byte

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

Cobalah online!Tautan adalah untuk mengucapkan versi kode. Lebih lama daripada yang saya inginkan, karena "kubus" sedikit lebih lebar daripada tinggi atau dalam. Untungnya beberapa karakter multiarah bekerja dengan PolygonHollow, yang menyelamatkan saya 3 byte. Sunting: Menyimpan byte lebih lanjut dengan menggunakan + alih-alih T ↑. Penjelasan:

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

Pada saat tantangan, itu q variabel tidak berfungsi dalam mode verbose, jika tidak saya bisa membuat versi 14-byte ini:

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

Cobalah online!


3

Ditumpuk , 31 byte

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

Cobalah online!

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

Ini mengubah array karakter menjadi biner, membalut setiap baris dengan panjang 6, dan mengindeksnya sesuai dengan string' ' input +



2

JS (ES6), 64 60 52 byte

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

Bisakah ini diperbaiki:

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

1
y=i+i+i+ilebih pendek dariy=i.repeat(4)
Stephen

2
... dan ####bahkan lebih pendek.
Arnauld

1
Sebenarnya semuanya lebih singkat tanpa templat: Fiddle
Stephen

1

C (gcc) , 90 84 byte

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

Cobalah online! Menentukan fungsi fyang mengambil karakter g. Terlalu buruk penyandian tabel secara langsung lebih pendek ...

Versi lama, 90 byte

(Masih mencoba golf yang satu ini)

Mencoba hanya punya satu putchar, tetapi idk. Ada unsintables, jadi inilah 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);}

Ini mengkodekan kubus ke dalam tabel pencarian biner, di mana 1sedikit mewakili input dan 0sedikit mewakili spasi. Cobalah online!


1

Brain-Flak , 217 byte

(((((((((((((((((({}))))<([][]()())>)<(([][])[]{}())>)<(([][]){})>)<([])>)<(((()
())[][]{}()()))>)))<((()()()()()){})>)<(((()()()){}){}()[])>)<(((()()())()){}{}[
])>)<(((()()())){}{}[])((()()()()()){})>))))(([]()()()))

Cobalah online!

Waaaaay terlalu lama.


1

Swift - 82 bytes + Foundation (18 bytes)?

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

Secara default, ada proyek Xcode-Swift Whole-Module Optimization, sehingga import Foundationtidak diperlukan untuk fungsi seperti lambda sederhana ini. Namun, menjalankannya di lingkungan online memerlukannya, yang dapat menambah 18 byte.

Coba lihat!



0

CJam, 23 byte

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

Saya merasa masih bisa bermain golf.

"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

dc , 70 byte

Mengkodekan urutannya secara langsung, dengan optimasi kecil:

8224PdPdPdPdP10Pd8192+ddPPP10PdPdPdP8224PdP10Pd256*32+ddPPP10PdPdPdPdP

Cobalah online!


Diambil ke ekstrem (tidak terlalu golf), 145 byte:

27065671941896667324298575455432398417474802390765222440949482848513*56759961956005660143530475805610581704254588701249011343446231795984498688+P

Cobalah online!

Ini menghitung A*x+B, di mana Amengkodekan posisi karakter input dan Bmengkodekan semua yang lain:

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 perintah mencetak angka yang dihasilkan sebagai aliran byte.



0

Batch Windows, 79 byte

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

Char khusus. aman, 97 byte:

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

Bisakah Anda menggunakan umpan garis yaitu.. %1%1%1%1\n %1 %1 %1...
TheLethalCoder

Umpan baris tidak didukung dalam batch
stevefestl

Saya tidak ingat apakah mereka atau tidak dan tidak dalam posisi untuk menguji :)
TheLethalCoder

Maaf, saya bingung, bisakah Anda mengulanginya?
stevefestl

Saya tidak ingat apakah Anda bisa menggunakannya atau tidak dan saya tidak bisa menguji pada saat saya berkomentar jadi saya meninggalkan komentar sehingga Anda masih memiliki ide
TheLethalCoder

0

Tcl, 60 byte

proc c x {regsub . $x "  &&&&\n & & &\n&&&  &\n& & &\n&&&&"}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.