Terkait tetapi sangat berbeda.
Sebuah boustrophedon adalah teks di mana setiap baris tulisan membalik atau terbalik, dengan huruf terbalik.
Dalam tantangan ini, kita hanya akan membalik setiap baris lainnya, tetapi membiarkan karakter yang sebenarnya digunakan tetap utuh. Anda dapat memilih garis mana yang akan dibalik, asalkan garis yang lain.
Anda dapat mengambil teks dalam format apa pun yang sesuai selama Anda mendukung nol atau lebih baris ASCII yang dapat dicetak, masing-masing dengan nol atau lebih karakter.
Contoh:
["Here are some lines","of text for you","to make a","boustrophedon"]:
["Here are some lines","uoy rof txet fo","to make a","nodehportsuob"] or ["senil emos era ereH","of text for you","a ekam ot","boustrophedon"]
["My boustrophedon"]:
["My boustrophedon"] or ["nodehportsuob yM"]
[]:
[]
["Some text","","More text","","","Last bit of text"]:
["Some text","","More text","","","txet fo tib tsaL"] or ["txet emoS","","txet eroM","","","Last bit of text"]
Jawaban:
APL (Dyalog Classic) , 4 byte
Input adalah vektor vektor karakter.
⌽
adalah fungsi yang membalikkan vektor (bila⌽
diterapkan secara monadik).⊢
adalah " dex " - fungsi yang mengembalikan argumen yang benar. Ketika dikomposisikan (∘
) dengan fungsi lain,f
ia memaksa yang terakhir bersifat monadik sebagaimanaA ⊢∘f B
ekivalen denganA ⊢ (f B)
dan karenanyaf B
.\
adalah operator pemindaian .g\A B C ...
adalah vektorA (A g B) (A g (B g C)) ...
di manag
diterapkan dyadically (notasi infiks). Pengganti⊢∘⌽
untukg
itu menyederhanakan untuk:Pembalikan pada posisi genap (atau ganjil, tergantung pada bagaimana Anda menghitung) dibatalkan.
Cobalah online!
sumber
]&|.&.>/\
untuk mereka yang dapat membaca J.Haskell , 26 byte
Cobalah online! Contoh penggunaan:
zipWith($)l ["abc","def","ghi"]
hasil["abc","fed","ghi"]
.Penjelasan:
l
adalah daftar fungsi tak terbatas yang bergantian antaraid
fungsi entitas danreverse
fungsi.Ritsleting fungsi utama
l
dan daftar input dengan aplikasi fungsi$
, yaitu untuk input yang["abc", "def", "ghi"]
kita dapatkan[id$"abc", reverse$"def", id$"ghi"]
.sumber
Sekam , 4 byte
Mengambil dan mengembalikan daftar string (penerjemah secara implisit menggabungkan hasilnya dengan baris baru sebelum mencetak). String pertama dibalik. Cobalah online!
Penjelasan
Dalam Husk, mengalikan string dengan angka berulang berkali-kali, juga membalikkannya jika jumlahnya negatif.
sumber
JavaScript (ES6), Firefox, 43 byte
Versi ini menyalahgunakan algoritma pengurutan Firefox . Ini menghasilkan sampah di Chrome dan tidak mengubah string sama sekali di Edge.
Uji kasus
Tampilkan cuplikan kode
Atau Coba online! (Monyet laba-laba)
JavaScript (ES6), 45 byte
Uji kasus
Tampilkan cuplikan kode
sumber
APL (Dyalog Unicode) , 10 byte
Bekerja dua arah:
Cobalah online! dengan
⎕IO←1
Cobalah online! dengan
⎕IO←0
Bagaimana itu bekerja:
sumber
Perl 5, 17 + 2 (-pl) = 19 byte
garis-garis aneh terbalik
bahkan garis terbalik
Setelah komentar @ Martin: input harus memiliki linefeed tambahan.
coba online
sumber
Haskell , 27 byte
Cobalah online!
Haskell , 30 byte
Cobalah online!
Rekursi FTW.
sumber
05AB1E ,
54 byteCobalah online!
Penjelasan
sumber
K (oK) ,
1714 byteLarutan:
Cobalah online!
Contoh:
Penjelasan:
Terapkan
reverse
pada indeks ganjil dari daftar input:Catatan:
&(#x)#0 1
untuk&2!!#x
menghemat 3 bytesumber
APL (Dyalog) , 12 byte
Cobalah online!
sumber
Python 2 ,
4036 byte-4 byte terima kasih kepada @ Mr.Xcoder
Cobalah online!
Keluaran dengan memodifikasi daftar input
Python 2 , 43 byte
Cobalah online!
sumber
Alumin , 66 byte
Cobalah online!
sumber
J , 9 byte
Kurangi dari kanan ke kiri, balikkan semua string dalam hasil dan tambahkan string berikutnya apa adanya.
Cobalah online!
Kita dapat melakukan 6 menggunakan pendekatan ngn , tetapi akan ada ruang tambahan:
Cobalah online!
sumber
R , 85 byte
Cobalah online!
Input dari stdin dan output ke stdout.
Setiap baris harus diakhiri oleh linefeed / carriage return / CRLF, dan ia mencetak dengan baris baru yang sesuai. Jadi, input harus memiliki linefeed tambahan.
sumber
Jelly ,
54 byteCobalah online!
Terima kasih HyperNeutrino untuk -1 byte! (sebenarnya karena saya tidak pernah tahu cara
ƭ
kerjanya karena kurangnya dokumentasi, kali ini saya beruntung)sumber
¦
denganm
(7 byte).s2U2¦€;/
juga 7 byte.T-SQL, 65 byte
Aturan input standar kami memungkinkan SQL untuk memasukkan nilai dari tabel yang sudah ada , dan karena SQL secara inheren tidak berurutan, tabel harus memiliki nomor baris untuk mempertahankan urutan teks asli.
Saya telah mendefinisikan tabel dengan kolom identitas sehingga kita cukup memasukkan baris teks secara berurutan (tidak dihitung terhadap total byte):
Jadi untuk memilih dan membalikkan baris bergantian:
Perhatikan bahwa saya dapat menyimpan 11 byte dengan mengecualikan
ORDER BY i
, dan itu kemungkinan akan mengembalikan daftar dalam urutan asli untuk panjang yang masuk akal (itu tentu berlaku untuk contoh 4-line). Tetapi SQL hanya menjamin jika Anda menyertakanORDER BY
, jadi jika kami memiliki, katakanlah, 10.000 baris, kami pasti akan membutuhkan ini.sumber
Perl 6 , 44 byte
Cobalah
sumber
Dibatasi koma:
Stax , 12 byte
Jalankan dan debug itu
input: ABC, def, GHI, jkl, MNO, pqr, STU
Batas baru:
Stax , 8 byte
Jalankan dan debug itu
memasukkan:
output untuk keduanya:
sumber
Sebenarnya , 7 byte
Penjelasan:
Cobalah online!
sumber
Alice , 13 byte
Cobalah online!
Input melalui argumen baris perintah yang terpisah. Membalikkan baris pertama (dan setiap baris lainnya setelah itu).
Penjelasan
sumber
ML Standar (MLton) , 51 byte
Cobalah online! Contoh penggunaan:
$ ["abc","def","ghi"]
hasil["abc","fed","ghi"]
.Penjelasan:
$
adalah fungsi yang berulang pada daftar string. Dibutuhkan dua stringa
danb
dari daftar, menjaga yang pertama tidak berubah dan membalik yang kedua dengan mengubah string menjadi daftar karakter (explode
), membalikkan daftar (rev
), dan mengubahnya kembali menjadi string (implode
).sumber
Retina , 18 byte
Cobalah online! Penjelasan: Tahap pertama membalikkan baris pertama, kemudian tahap kedua mencetak dua baris pertama, setelah itu tahap ketiga menghapusnya. Seluruh program kemudian diulang sampai tidak ada yang tersisa. Satu baris baru yang tertinggal dapat dihapus dengan biaya seorang pemimpin
;
.sumber
Bahasa Wolfram (Mathematica) , 33 byte
Cobalah online!
Bagaimana itu bekerja
StringReverse@*Append
, ketika diberi daftar string dan string lain sebagai input, menambahkan string ke akhir daftar dan kemudian membalikkan semua string.Fold
Masukan yang terkait dengan hal di atas berarti kita:Setiap baris akan dibalik satu kali lebih sedikit dari garis sebelumnya, sehingga garis-garis itu berganti arah.
sumber
CJam , 11 byte
Cobalah online! (CJam array literal menggunakan spasi untuk memisahkan elemen)
Penjelasan:
Penjelasan untuk bagian
Waf.%
"ilmu hitam":W
adalah variabel yang diinisialisasi ke-1
.a
membungkus elemen dalam array, demikianWa
juga[-1]
.%
muncul angkan
dan arraya
dan mengambil setiapn
elemen array. Ketikan
negatif, itu juga membalikkannya, yang berartiW%
membalikkan array..
diikuti oleh operasi biner berlaku operasi itu untuk elemen array yang sesuai, begitu[1 2 3] [4 5 6] .+
pula[5 7 9]
. Jika satu array lebih panjang dari yang lain, elemen disimpan tanpa modifikasi, artinyaWa.%
membalik elemen pertama dari array.f
diikuti oleh operasi biner akan mengambil elemen dari stack dan kemudian bertindak seperti{<that element> <that operation>}%
, yaitu, pergi melalui setiap elemen dalam array, dorong elemennya, dorong elemen pertama muncul dari tumpukan, jalankan operasi, dan kemudian kumpulkan hasilnya kembali ke array. Ini berartiWa.f%
membalik elemen pertama dari setiap elemen dalam array.sumber
V , 4 byte
Cobalah online!
sumber
Swift ,
90858272 byte-10 byte terima kasih kepada @ Mr.Xcoder
sumber
print
dan menjatuhkan deklarasi tipe kembali:func f(a:[String]){print(a.reduce([]){$0.map{"\($0.reversed())"}+[$1]})}
Ruby , 19 + 2 = 21 byte
+2 byte untuk
-nl
bendera.Cobalah online!
Penjelasan
Praktis identik dengan jawaban Perl 5 , meskipun saya belum melihat yang ketika saya menulis ini.
Dengan spasi putih, kode ini terlihat seperti ini:
The
-p
pilihan membuat Ruby efektif membungkus naskah Anda dalam sebuah loop seperti ini:Variabel khusus
$_
berisi baris terakhir yang dibaca olehgets
, dan$.
berisi nomor baris.The
-l
memungkinkan baris otomatis berakhir pengolahan, yang secara otomatis panggilanchop!
pada setiap baris masukan, yang menghilangkan satu\n
sebelum kita membalikkan itu.sumber
GNU sed , 31 + 1 = 32 byte
+1 byte untuk
-r
bendera.Cobalah online!
Penjelasan
sumber
Arang , 9 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Catatan: Charcoal tidak tahu panjang daftar, jadi saya menambahkannya sebagai elemen tambahan. Penjelasan:
sumber
Befunge-93, 48 byte
Cobalah secara Online
Mencetak baris pertama secara terbalik. Memiliki baris baru.
Pada dasarnya, ini bekerja dengan bergantian antara mencetak saat mendapat input dan menyimpan input pada tumpukan. Ketika mencapai baris baru atau akhir input, ia mencetak tumpukan, mencetak baris baru, dan memodifikasi karakter pada 0,4 menjadi # atau no-op untuk mengubah mode. Jika itu adalah akhir dari input, akhiri program
sumber