Tantangan
Robin suka memiliki deklarasi variabel dalam bentuk panah. Begini cara dia melakukannya:
- Masukkan sejumlah string
- Pesanlah dengan panjang menanjak
Keluarkan mereka yang dipesan oleh bagian tengah untuk kira-kira membentuk panah negatif, seperti ini (mana yang paling suka golf):
5 or 4 3 2 1 1 2 3 4 5
Uji Kasus
Memasukkan:
bow
arrows
sheriffOfNottingham
kingRichard
maidMarian
princeJohn
sherwoodForest
Keluaran:
sheriffOfNottingham
kingRichard
maidMarian
bow
arrows
princeJohn
sherwoodForest
Memasukkan:
a
bb
cc
Output (keduanya valid):
bb
a
cc
cc
a
bb
Memasukkan:
one
four
seven
fifteen
Kemungkinan keluaran (satu-satunya keluaran valid lainnya adalah cermin vertikalnya):
seven
one
four
fifteen
Catatan
String ada di camelCase dan tidak memiliki angka atau karakter khusus, hanya huruf kecil dan huruf besar.
Input dapat berupa apa saja yang Anda suka: dipisahkan dengan koma sebagai satu string, array, ... Setiap format I / O diizinkan.
- Antara string dengan panjang yang sama, pesanan apa pun diterima.
Jawaban:
Python 2 , 47 byte
Cobalah online!
sumber
[::-2]
langsung untuk menghemat 5 byte.R ,
6348 byteCobalah online!
Urutkan berdasarkan panjang string, lalu gabungkan daftar terbalik dengan daftar diurutkan, akhirnya, ambil setiap elemen ke-2, mulai dari indeks berbasis 1.
sumber
o<-L[...
Cara lain untuk 'panah variabel'. Samping yang kurang penting,pryr::f(...)
bekerja di sini untuk 46. Cobalah online!R + pryr
itulah sebabnya saya biasanya menghindari melakukannya kecuali ada alasan yang baik untuk - seperti untuk pertanyaan nomor teori,numbers
sangat diperlukan.Javascript 77 byte
Mengambil input sebagai array string, menghasilkan array string panah-diurutkan.
Penjelasan
sumber
f=
. 77f=x=>x?f(x-1)
. Jika demikian, Anda perlu memasukkanf
karena Anda memanggilnya dalam fungsi Anda. Namun, karena Anda tidak menggunakan rekursi, Anda tidak harus memasukkannyaf
. Ada beberapa posting di Meta, yang ini sepertinya menjelaskannya sedikit lebih baik. codegolf.meta.stackexchange.com/a/9032/8340C # (Visual C # Interactive Compiler) , 89 byte
Cobalah online!
sumber
K (oK) , 24 byte
Larutan:
Cobalah online!
Penjelasan:
Buat
6 4 2 0 1 3 5
urutan, gunakan itu untuk mengindeks ke dalam panjang input yang naik, dan gunakan itu untuk mengindeks ke dalam array asli:sumber
Jelly ,
98 byteCobalah online!
juga 8 byte.
Terima kasih kepada @EriktheOutgolfer dan @ JonathanAllan karena keduanya menawarkan golf untuk menghemat satu byte.
sumber
Ṛ€1¦
bisa menjadim"-
.LÞŒœṚ;¥/
Ruby , 51 byte
Cobalah online!
sumber
05AB1E ,
65 byteDisimpan 1 byte berkat Kevin Cruijssen
I / O adalah daftar string.
Tautan dimodifikasi untuk I / O yang dipisahkan oleh baris baru untuk pengujian yang lebih mudah.
Cobalah online!
Penjelasan
sumber
R
dan menggantinya«
dengani
untuk menyimpan byte, karena aturan poin-ketiga memungkinkan kedua versi uninterleaving.J , 11 byte
Cobalah online!
Kami mengurutkannya terlebih dahulu.
Kemudian kita mengurangi formulir daftar dari kanan ke kiri, tetapi berganti-ganti sisi mana kita meletakkan elemen baru. Selesai
sumber
PowerShell , 66 byte
Cobalah online!
Mengambil input melalui splatting, yang bermanifestasi pada TIO sebagai argumen baris perintah yang terpisah.
sort
padal
ength, menyimpannya ke dalam$a
, dan membangun rentang dari1
hinggacount
string input. Kami kemudian menarik hanya yang aneh?{$_%2}
dan memberi makan mereka menjadi satu lingkaran|%{...}
. Setiap iterasi, kami menempatkan "terakhir", lalu "ketiga dari terakhir", dan seterusnya ke dalam pipa bersama$a[-$_]
. Secara terpisah, kami juga terakumulasi menjadi$x
"kedua dari terakhir", "keempat dari terakhir", dll. Keluar dari loop dan pipeline memerah (jadi elemen-elemen tersebut adalah output) dan kemudian kami output$x
. Dalam kedua contoh, output default memberi kita baris baru antar item secara otomatis.sumber
PHP ,
144141 byteCobalah online!
-3 byte terima kasih kepada @Ismael Miguel !
sumber
[array_unshift,array_push][++$i%2]($e,$d)
?['array_push','array_unshift']
dengan[++$i%2]
sebagai indeks array yang bergantian antara satu0
atau1
lebih akan mengevaluasi ke fungsi lainnya setiap kali. "Fungsi variabel" PHP memungkinkan Anda menetapkan variabel ke suatu fungsi dan mengeksekusi dengan memanggil dengan tanda kurung (contoh:$f='array_push'; $f($e,$d);
==array_push($e,$d)
) sehingga($e,$d)
kemudian memanggil elemen array yang dievaluasi. Cara yang lebih singkat untuk dilakukanif (++$i%2) array_push($e,$d); else array_unshift($e,$e);
. Sepertinya ada beberapa gula sintaksis PHP![array_unshift,array_push][++$i%2]($e,$d)
dengan(array_.[unshift,push][++$i%2])($e,$d)
. Apa yang saya lakukan adalah menghapus yang diulangarray_
, menyatukannya dan kemudian hasilnya diteruskan ke panggilan.MATLAB, 87 byte
Mengambil input sebagai array sel string, menampilkan kolom string (tidak yakin apakah itu legal)
PS: Terima kasih Sanchises karena menunjuk bug dengan input panjang ganjil
sumber
f({'loooooooong','medium','short'})
end
ini opsional untuk afunction
. Penggunaanfunction x=f(y);x={...}'
lebih pendek darifunction f(y);disp({...}')
.disp
adalah saya tidak yakin apa aturan outputnya. Haruskah itu murni teks atau tidak? ataudisp({...})
tidak apa-apa atau bahkanx={...}
seperti yang Anda sarankanAPL (Dyalog Unicode) , 18 byte SBCS
Cobalah online!
Memperbaiki bug berkat @ngn.
Penjelasan:
¹
sumber
≢¨×¯1*⍳∘⍴
->(⊢∘-\≢¨)
dan semakin pendek jika Anda mengubahnya menjadi dfnAPL + WIN,
3138 byteLihat komentar Adams
Cobalah secara online Courtesy of Dyalog Classic!
Anjuran untuk vektor string yang bersarang
sumber
≢
"penghitungan" Monadic untuk diganti∊⍴
?'12' '1234' '1234' '1234' '1234' '12345678' '12345678' '12345678' '12345678'
. Jelas, hasilnya seharusnya'12345678' '12345678' '1234' '1234' '12' '1234' '1234' '12345678' '12345678'
Retina , 26 byte
Cobalah online! Penjelasan:
Urutkan garis dalam urutan panjang (
$.&
mengembalikan panjang garis).Hapus sementara garis alternatif dan output garis yang tersisa dalam urutan terbalik.
Pertahankan satu-satunya baris yang dihapus sementara dan outputkan.
sumber
Gaia , 10 byte
Cobalah online!
sumber
Japt, 8 byte
-3 byte, terima kasih untuk Shaggy!
Cobalah
sumber
A.ë()
tetapi saya tidak tahu apakah itu akan mengarah pada solusi yang lebih pendek.PowerShell , 49 byte
Cobalah online!
Distilasi ganda .
sumber
T-SQL, 84 byte
Input adalah variabel tabel
Cobalah online
sumber
Perl 6 , 31 byte
Cobalah online!
Sortir menurut panjang string, kemudian dengan urutan statis 0, -1, 0, -3, 0, -5, ...
sumber
Javascript 95 Bytes
sumber
s.sort()
mengurutkan string secara leksikografis, bukan berdasarkan panjang string.Merah ,
116101 byteCobalah online!
sumber
perl 5 (
-p0777F/\n/ -M5.01
), 59 byteTIO
sumber
C (gcc) ,
136128 byteCobalah online!
-8 Bytes berkat ceilingcat.
Fungsi
f
adalah solusinya. Dibutuhkan jumlah string, string itu sendiri, dan buffer output sebagai argumen (ditambah empat lagi yang digunakan secara internal).sumber
./.bin.tio
dalam output ?argv
, yang mencakup nama filet
di tempat pertama dan tetap di sekitar bahkan ketika Anda tidak membutuhkannya!Japt , 8 byte
Input sebagai array baris, output sebagai array 2 array baris, satu untuk setiap setengah dari daftar.
Cobalah (Kode tambahan untuk memungkinkan I / O sebagai string yang dipisahkan baris baru)
sumber
Haskell ,
10496 byteCobalah online!
sumber