Pengantar:
Terinspirasi oleh komentar ini dari @MagicOctopusUrn pada @Emigna 's jawaban 05AB1E untuk saya ' Itu hanya bug ' tantangan :
8F9ÝÀNð×ý}».∊
Saya sudah melakukan membuat pesawat ruang angkasa! Dan saya sangat senang menyarankan edit 12 byte. - Magic Gurita Guci 17 Jul 17 'at 20:10
Yang merupakan program (legacy) 05AB1E menghasilkan ini:
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
Tantangan:
Input: String yang tidak kosong
Output: Dari luar menuju ke dalam, tambahkan satu spasi lagi di antara setiap karakter setiap baris, sama seperti yang dilakukan pada output di atas, sama dengan length - 1
. Jadi untuk input 1234567890
, output sebenarnya adalah ini:
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
Mengapa? Panjangnya 1234567890
adalah 10
. Jadi kita mulai dengan menghasilkan 10 baris: baris pertama tanpa spasi; kedua dengan satu pembatas ruang; ketiga dengan dua; dll. Dan kemudian (tanpa garis tengah dengan length - 1
spasi diduplikasi), kita kembali ke input awal sambil turun.
Aturan tantangan:
- Input dijamin tidak kosong (panjang
>= 1
). (Untuk input karakter tunggal, kami cukup menampilkan karakter itu.) - Jumlah spasi / spasi utama / baris baru diizinkan, selama output itu sendiri (di mana pun di layar) sudah benar. (Baris kosong di antara jalur output juga tidak diperbolehkan.)
- Input hanya akan berisi karakter ASCII yang dapat dicetak tidak termasuk spasi putih (rentang titik kode
[33, 126]
) - I / O fleksibel. Input dapat diambil sebagai parameter STDIN, argumen, atau fungsi. Mungkin daftar / array / aliran karakter, bukan string. Output juga dapat berupa daftar / array / aliran karakter, bukan string; dapat dicetak ke STDOUT; dikembalikan sebagai string yang dibatasi baris baru; dll.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program lengkap. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
Input: @
Output:
@
Input: test
Output:
test
t e s t
t e s t
t e s t
t e s t
t e s t
test
Input: ?!
Output:
?!
? !
?!
Input: Spaceship
Output:
Spaceship
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
Spaceship
Input: 05AB1E
Output:
05AB1E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
05AB1E
Input: )}/\
Output:
)}/\
) } / \
) } / \
) } / \
) } / \
) } / \
)}/\
ಠ_ಠ
lalu menyadari itu karena Anda secara tidak sengaja membuatnya setahun laluಠ⌣ಠ
.Jawaban:
Japt ,
86 byteMengambil input sebagai array karakter, menghasilkan array string.
Cobalah
Penjelasan
Asli, 8 byte
I / O adalah sebuah string. Menggunakan
-R
bendera. Termasuk spasi tambahan di setiap baris.Cobalah
Penjelasan
sumber
S.ç()
FTW sekali lagi :-)R ,
10599858479 byte-6 terima kasih kepada @Kevin Cruissen dan @Giuseppe
-14 dari perubahan ke metode berbasis regex
-1 terima kasih kepada @Giuseppe
-5 terima kasih kepada @digEmALl
Cobalah online!
sumber
in(r<-
.s
sekali sehingga Anda bisa menggunakannya sebagai argumenwrite
secara langsung; membawa Anda ke 99 byte1
bukan""
di dalamwrite
? Saya menggali penggunaan AndaMap
!collapse
argumen untukpaste
tetapi itu tidak terjadi ...JavaScript (ES6), 53 byte
Mengambil input sebagai array karakter.
Cobalah online!
sumber
Arang , 10 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
[
untuk]
- atau adalah bahwa perintah terpisah lain?Kanvas , 8 byte
Coba di sini!
Versi 7 byte terlalu bagus untuk tantangan ini ..
sumber
/
sX
?─
- palindromize vertikal. Palindromisasi Kanvas melakukan hal-hal keren . Bagian yang tumpang tindih memiliki karakter sendiri juga.Python 2 ,
7270686665 byte-2 byte terima kasih kepada Kevin Cruijssen
-3 byte berkat ovs
Cobalah online!
sumber
c==len(w)-1
dapat golf dengan 1 byte denganc+2>len(w)
. EDIT: Di versi 70-byte baru Anda,0<c
bisac
.05AB1E ,
109 byteDisimpan 1 byte berkat Adnan
Cobalah online!
Penjelasan
sumber
S
. Input fleksibel, sehingga input sesuai daftar diperbolehkan.»
dapat dihilangkan.»
dan mengubah loopv
ke petaε
.εINð×ý}û»
juga berfungsi?Ruby ,
5449 byteCobalah online!
Mengambil input sebagai larik karakter, menghasilkan larik string.
sumber
Japt ,
98 byte-1 byte dari @Shaggy
Cobalah online!
sumber
SpX
->Xî
untuk penghematan 1 byte.PowerShell ,
6654 byte-12 byte berkat mazzy
Cobalah online!
Mengambil input melalui splatting, yang pada TIO bermanifestasi sebagai argumen baris perintah terpisah untuk setiap karakter.
Kami pertama-tama ditetapkan
$a=$args
sebagai argumen input. Kemudian kita set$x
sama dengan.count
array itu-1
. Kita kemudian perlu mengulang surat untuk membangun pesawat ruang angkasa. Itu dilakukan dengan membuat rentang dari0
ke$x
, lalu$x
kembali ke0
, lalu menggunakanGet-Unique
untuk menarik hanya rentang yang sesuai.Setiap iterasi, kami mengambil argumen masukan kami dan
-join
mereka bersama-sama dengan jumlah spasi yang sesuai. Masing-masing string tersebut ditinggalkan di jalur pipa, dan sebuah implisitWrite-Output
memberi kita baris baru secara gratis ketika program selesai.sumber
0..($x=($a=$args).count-1)+$x..0|gu|%{$a-join(' '*$_)}
Get-Unique
kerjanya di kisaran? Itu gila! Terima kasih!05AB1E (warisan) , 9 byte
Masukan sebagai daftar karakter.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
[
,]
dan(
,)
. Mungkin ingin menambahkan kasing itu untuk menangkap arang juga. (Pindah komentar lain untuk jawaban Emigna, karena dia adalah jawaban yang saya awalnya mengomentari)û»
alih-alih.∊
.Haskell ,
6059 byteCobalah online!
Penjelasan
Untuk string (mis.
"abc"
) Kami menerapkan terlebih dahuluyang sama dengan
Ini berulang kali berlaku
(?)
(menambahkan spasi untuk setiap karakter dalam kisaran [33 ..] ) kestr
hingga ada banyak string seperti yangstr
memiliki karakter:["abc","a b c ", "a b c "]
Sekarang kita hanya perlu menggabungkan hasilnya (minus elemen terakhir) dengan bagian pembaliknya:
sumber
MATL ,
252213 byteCobalah online!
Terimakasih untuk Luis Mendo karena menyarankan golf 5 byte, yang kemudian mengilhami saya untuk mengurangi 4 byte lagi!
Penjelasan, dengan contoh input
'abc'
:sumber
Jelly , 9 byte
Cobalah online!
Mengembalikan daftar garis; output yang di-prettified melalui TIO.
sumber
,€⁶$LСŒḄ
. Lainnya, lebih mirip, 9-an:J’⁶ẋŒḄɓjⱮ
danJ’⁶ẋŒḄjⱮ@
(saya sedang mencari yang lebih pendek tetapi belum ada sukacita)LḶ⁶ẋ
atauŒḄ
. Namun, jika Anda berhasil menemukan save, lakukan ping saya. :-),€⁶$LСŒḄ
mungkin tidak valid karena memiliki sarang gila sehingga mungkin perluY
dan menjadi program lengkap.['I', 'f', [[' '], 't', 'h', [['i']], 's'], ' ', 'i', ['s', ' '], 'a', [[' ', 's', 't'], 'r', ['i', 'n', 'g'], ' '], 'w', ['e', ' ', 'a', 'r', 'e'], ' ', 'd', 'o', ['o'], 'm', [[[[['e']]]]], [[[['d']]]], '!']
Setidaknya saya sudah mengungguli 05AB1E ...Pyth , 12 byte
Hanya pengajuan Pyth wajib saya. Saya cukup bangga dengan ini sehingga penjelasan kemungkinan akan segera hadir.
Coba di sini!
Coba di sini!
sumber
Stax , 10 byte
Jalankan dan debug itu
Output dengan spasi spasi di setiap baris.
Penjelasan:
sumber
Java (JDK 10) , 115 byte
Cobalah online!
sumber
l-Math.abs(i)
dapat di-golf hinggai<0?l+i:l-i
-2 byte.l-i<0?-i:i
?l-(i<0?-i:i)
(12 byte).K (oK) ,
2524 byteLarutan:
Cobalah online!
Penjelasan:
Port solusi K4 saya :
Catatan:
sumber
,:'
->+,
Pascal (FPC) ,
143135 byteCobalah online!
Saya mungkin akan menang hanya melawan Bahasa ...
sumber
PHP,
8889 bytemembutuhkan PHP 5 atau lebih baru untuk
str_split
. Jalankan sebagai pipa dengan-nR
atau coba online .sumber
K4 , 23 byte
Larutan:
Contoh:
Penjelasan:
Memiliki spasi spasi di setiap baris.
sumber
C #,
11310598 byteCobalah online!
sumber
s=>{
sebelum dan}
sesudah menjadikannya fungsi lambda. Selain itu, satu hal untuk golf adalah melepas tanda kurung di sekitar for-loop. Cobalah online.Scala , 82 byte
Cobalah online
Scala memiliki banyak pintasan yang membantu saya di sini dan itu cukup mudah dibaca! Coba Scala
sumber
0
kelength
jumlah ruang, bukan0
untuklength-1
berjumlah ruang. Saya tidak terlalu mengenal Scala, tetapi sepertinya Anda dapat memperbaiki kedua masalah dengan +4 byte (total 86 byte) seperti ini:for(i<-(0 to a.size-1)union(-a.size+2 to 0))println(a.map(_+" "*Math.abs(i)).mkString)
Sekali lagi selamat datang, dan nikmati masa tinggal Anda! :)Oracle SQL, 115 byte
Bukan bahasa golf tapi ...
Dengan asumsi bahwa nilainya ada dalam kolom
v
tabelt
:SQL Fiddle
Pengaturan Skema Oracle 11g R2 :
Pertanyaan 1 :
Hasil :
(SQLFiddle mencetak nilai yang tepat di kolom untuk beberapa alasan ... tidak ada spasi terkemuka)
sumber
(.)
-golf.
dengan menggunakan\0
alih-alih\1
seperti yang Anda lakukan di Java misalnya? EDIT: Sudahlah, itu untuk$0
, bukan\0
.. ( Jawa contoh apa yang saya maksud ).8086 kode mesin,
5653 byteDirakit dari:
Kasus cobaan:
sumber
length
jumlah spasi dan total ada 9 baris, tetapi garis tengah harus memilikilength-1
jumlah spasi dan harus ada total 7 baris sebagai gantinya (untuk kata 'test'` 4 huruf) ..: (Saya harap ini tidak mahal dalam hal byte untuk diperbaiki?Haskell,
646059 byteCobalah online!
sumber
Bash ,
115,109,105,100,97,96,92,91, 90 byte-5 & -3 Terima kasih kepada Kevin Cruissen
Cobalah online!
Perhatikan bahwa karena
\
ini adalah shell pelarian karakter, kasus uji)}/\
harus dimasukkan dengan tambahan\
seperti ini:)}/\\
.sumber
in
danprintf
suka dengan Python?bash
kode hanya masukan sebuah tali, ( yaitu hanya satu baris). Namun, semua kasus uji berfungsi, namun)}/\
harus tunggal yang dikutip seperti ini<<< ')}/\' read s; ...etc.
. Ruang setelahin
danprintf
dibutuhkan.for
dando
dapat dihapus.f=1
dapat diubah menjadic=f=1
. Danf=f+c
bisa jadif+=c
.f!=0
kef
dalam for-loop. Sama seperti dalam JavaScript dan Python,0
adalah falsey dan setiap bilangan bulat positif / negatif lainnya tampaknya benar di Bash.Perl 6 , 43 byte
Cobalah online!
Mengembalikan daftar garis.
Penjelasan:
sumber
C (gcc) ,
131129111 byteCobalah online!
Terima kasih -20 byte ceilingcat !
Cobalah online!
Atau, jika panjang dapat diterima sebagai parameter:
C (gcc),
105102 byte-1 byte berkat ceilingcat!
Cobalah online!
sumber
x
dibayangi dan dengan demikian dinyatakan secara berlebihan.PHP,
148146143141 BytesAnda dapat mengujinya seperti ini:
Keluaran
Bak pasir
Versi yang diperluas
Percobaan 2, 92 byte
setelah melihat jawaban @Titus saya mengurangi milik saya menjadi ini:
Saya mencoba memikirkan cara untuk menggunakan 1 loop, bukannya 2 ... Percaya atau tidak, saya hampir tidak pernah menggunakan
for
loop dalam kode "nyata". Itu adalah~
bitwise Tidak, bahwa saya hilang ...Ini sedikit lebih lama
92
sehingga saya tidak merasa begitu buruk. Tapi saya akan memasukkannya sebagai upaya kedua.$argn
adalah input dari baris perintahBak pasir
sumber
f
bukannya menetapkan satu anonim untuk$f
-function f(
menyimpan 2 bytes lebih$f=function(
, dan Anda menyimpan byte lain setiap kali Anda meneleponf(...)
bukan$f(...)
. Atau, Anda dapat menangkap$s
, menghemat 2 byte -($i)use($s)
lebih lama 4 byte($i,$s)
, tetapi Anda menyimpan 3 byte untuk setiap panggilan,$f($i)
bukan$f($s,$i)
; dalam bahasa dengan penangkapan otomatis, seperti JS, ini lebih sering merupakan penghematan, karena Anda tidak membayar penaltiuse
pernyataan itu.use
tetapi rasanya lebih lama, untuk melakukan itu$i
adalah dinamis, itu harus diteruskan dengan referensi. Jadi itu harususe(&$i)
dan$i
harus didefinisikan sebelum meneruskannya dengan referensi$f
. Yang berarti mengaturnya di fungsi induk, atau sebelum yang lain. Untuk fungsi itu bisafunction s($s,$i)
dan hanya tahu itu harus dipanggil dengans($s,0)
tetapi tampaknya jelek, dan itu ada11 bytes, use(&$i),$i
$s
dan mengubah\n
kembali garis nyata. Itu membuatnya menjadi143
2 dari akhir baris dan 1 dari penggunaanf
alih-alih penutupan:function s($s){for(;$i<strlen($s);++$i)f($i,$s);for(--$i;--$i>=0;)f($i,$s);}function f($i,$s){echo chunk_split($s,1,str_repeat(' ',$i))." ";}
Fungsi tambahan seperti ini diizinkan menurut meta post ini: codegolf.meta.stackexchange.com/questions/7614/…