Tantangan
Tulis program atau fungsi yang menggunakan string s
dan integer n
sebagai parameter. Program Anda harus mencetak (atau mengembalikan) string ketika diubah sebagai berikut:
Mulai di kiri atas dan bergerak ke bawah dan ke kanan, tulis s
sebagai gelombang tinggi n
. Kemudian, dari atas ke bawah, gabungkan setiap baris sebagai string (tanpa spasi).
Contoh
Diberi string "WATERMELON" dan tinggi 3:
Gelombangnya akan terlihat seperti ini:
W R O
A E M L N
T E
Lalu, gabungkan baris dari atas ke bawah:
WRO
AEMLN
TE
Jadi, program Anda harus mengembalikan string "WROAEMLNTE"
Demikian juga, "WATERMELON" dengan ketinggian 4 harus menghasilkan gelombang berikut:
W E
A M L
T R O
E N
Program Anda kemudian harus mengembalikan string "WEAMLTROEN"
Aturan
Memasukkan
Masukan dapat diambil dalam format apa pun yang masuk akal. String dapat dalam hal apa pun yang Anda inginkan. Anda mungkin menganggap itu0 < n <= s.length
Keluaran
Keluaran harus hanya terdiri dari string yang ditransformasikan (apakah dikembalikan atau dicetak ke STDOUT), ditambah baris baru yang tertinggal.
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang! Tidak ada celah standar.
Uji Kasus
Input Output
programmingpuzzles, 5 -> piermnlsomgzgapzru
codegolf, 3 -> cgoeofdl
elephant, 4 -> enlatehp
1234567, 3 -> 1524637
qwertyuiop, 1 -> qwertyuiop
n
> 1? Mohon klarifikasi dan jika tidak menambahkan test casen > 0
, tetapin=1
ini adalah kasus yang valid. Saya akan memperbarui pertanyaan sekarang.Jawaban:
Sekam , 6 byte
Cobalah online!
Berfungsi untuk
n = 1
juga.Penjelasan
Fungsi urutan yang lebih tinggi berfungsi
δ
seperti ini di bawah tenda. Misalkan Anda memiliki fungsi urutan lebih tinggi yang mengambil fungsi unary dan daftar, dan mengembalikan daftar baru. Misalnya,Ö
mengambil fungsi dan mengurutkan daftar menggunakannya sebagai kunci. KemudianδÖ
mengambil fungsi biner dan dua daftar, ritsleting daftar bersama, berlakuÖ
untuk mengurutkan pasangan menggunakan fungsi biner sebagai kunci, dan akhirnya memproyeksikan pasangan ke koordinat kedua. Kami menggunakanK
sebagai fungsi kunci, yang hanya mengembalikan argumen pertama dan mengabaikan yang kedua.sumber
MATL , 16 byte
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Pertimbangkan input
5
,'programmingpuzzles'
.sumber
Haskell , 64 byte
Cobalah online!
sumber
J ,
54, 29, 2726 byte-1 byte berkat hoosierEE
Cobalah online!
sumber
n=1
sejak awal|@i:
alih-alih[:|i:
menyimpan byteR , 68 byte
Cobalah online!
n=1
case tetap terima kasih kepada @ Joesumber
Python 2 ,
11910898929197939190 byteCobalah online!
-1 byte, terima kasih kepada Jonathan Frech
sumber
05AB1E (warisan) ,
118 byteTerinspirasi oleh @LuisMendo 's MATL jawabannya .
-3 byte terima kasih kepada @Adnan karena aku idiot ..>.>
Cobalah online .
Penjelasan:
CATATAN: Ini
counter_variable
digunakan, karena dalam versi Python Legacy 05AB1E, yangΣ
tidak memiliki indeks builtin-N
, yang memang ada dalam versi penulisan Elixir baru dari 05AB1E. Jadi mengapa saya masih menggunakan versi Legacy? Karena dalam penulisan ulang Elixir secara implisit mengubah string ke daftar karakter, memerlukan tambahan}J
untuk mengubahnya kembali menjadi string untuk output (dan juga mengandung bug sekarang di manaè
tidak berfungsi sama sekali untuk mengindeks ke dalam daftar yang diperpanjang) ..: S)sumber
¹g∍
bagian itu karena 05AB1E menggunakan pengindeksan siklik untukè
.Japt , 16 byte
Uji secara online!
Penjelasan
sumber
ü
Metode itu baru?-P
bendera untuk menyimpan yang lain 2.Jelly , 8 byte
6 byter gagal untuk ketinggian 1; dua byte digunakan untuk mengatasinya ... mungkin 7 dapat ditemukan?
Tautan diad yang menerima bilangan bulat positif dan daftar karakter yang menghasilkan daftar karakter.
Cobalah online!
Bagaimana?
sumber
JavaScript (ES6), 75 byte
Formula yang lebih pendek disarankan oleh @MattH (-3 bytes)
Mengambil input sebagai
(string)(n)
.Cobalah online!
JavaScript (ES7), 78 byte
Disimpan 4 byte berkat produk @ETH
Mengambil input sebagai
(string)(n)
.Cobalah online!
sumber
o
denganx/n&1?n-x%n:x%n
bukann*n-(x%(n*2)-n)**2
.K ( Kona ), 23 byte
Terjemahan dari jawaban J oleh Galen
sumber
MBASIC ,
146159155 byteDiperbarui untuk menangani n = 1
Keluaran:
sumber
Perl 6 , 49 byte
Cobalah online!
Mengambil input sebagai fungsi kari.
Penjelasan:
Urutan yang disortir berdasarkan terlihat seperti ini (untuk
n=5
):sumber
J , 24 byte
Cobalah online!
Kata kerja diad eksplisit. Jalankan seperti
'codegolf' f 3
.Bagaimana itu bekerja
Biasanya, fungsi eksplisit membutuhkan tambahan 5 byte dalam bentuk
n :'...'
. Tetapi jika penanganan kesalahan ditambahkan, perbedaan turun menjadi 2 byte karena parens dan ruang dalam(tacit)<space>::
.sumber
sort up
?! Kata kerja eksplisit Anda masih lebih pendek 3 byte. Keputusan bagus!APL (Dyalog Classic) , 23 byte
Cobalah online!
sumber
Powershell,
9995 byteSkrip uji:
Keluaran:
Penjelasan
Naskah:
Ekspresi
((1..$n+$n..1)*$s.Length|gu
menghasilkan urutan seperti1,2,3,3,2,1,1,2,3,3,2,1...
dan menghapus duplikat yang berdekatan.gu
adalah alias untuk Get-Unique .$n=3
urutan deduplikasi adalah:1,2,3,2,1,2,3,2,1...
$n=1
urutan deduplikasi adalah:1
Ekspresi
$i++*($n-gt1)
mengembalikan indeks dalam urutan terduplikasi.=$i++
jika$n>1
sebaliknya=0
sumber
Ruby ,
7565 byteCobalah online!
Mengambil input sebagai array karakter, mengembalikan string
Bagaimana wokrs:
h
stringh
turun kemudian0
dan seterusnya)sumber
C,
142134 byte8 byte disimpan berkat Jonathan Frech
Kode:
Penjelasan:
Cobalah online!
sumber
Arang , 21 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Bekerja dengan mencatat indeks itum dari karakter on line saya memuaskan hubungannya m ± i = 0( mod2 n - 2 ) . Penjelasan:
sumber
SNOBOL4 (CSNOBOL4) , 191 byte
Cobalah online!
Dibawa
S
kemudianN
pada jalur yang terpisah.Penjelasan:
sumber
Bersih ,
10584 byteCobalah online!
sumber
JavaScript (Node.js) , 83 byte
Cobalah online!
sumber
Pyth ,
2221 byteMengambil input seperti yang
n
diikuti olehs
pada baris terpisah. Coba online di sini , atau verifikasi semua uji sekaligus di sini .Sunting: menyimpan satu byte dengan menggerakkan cek kosong ke akhir pemrosesan. Versi sebelumnya:
seMhD,V*lz|+PUQP_UQ]0z
sumber
Merah , 153 byte
Cobalah online!
Penjelasan:
sumber
Saya punya dua solusi untuk masalah ini. Solusi pertama yang saya lakukan pertama kemudian saya memikirkan cara lain untuk melakukannya yang saya pikir akan menghemat byte tetapi tidak jadi saya tetap memasukkannya.
Solusi 1
PHP ,
152144116 byteCobalah online!
Solusi 2
PHP , 162 byte
Cobalah online!
sumber
$f
dan$n-1-$i
bisa$n-~$i
. 144 bytesn=1
. Yang ini berfungsi untuk jumlah byte yang sama.echo
untuk menyimpan 5 byte lagiRuby , 84 byte
Cobalah online!
sumber