Memasukkan:
Dua string (CATATAN: urutan input penting).
Keluaran:
Kedua kata / kalimat tersebut dimulai pada baris dengan satu baris kosong di antaranya. Mereka 'berjalan' secara horizontal 'berdampingan'. Tetapi ketika mereka memiliki karakter yang sama di posisi yang sama, mereka saling silang, dan kemudian terus berjalan 'bersebelahan'.
Membingungkan Anda katakan? Mari kita beri contoh:
Masukan: Words crossing over
& Ducks quacking
:
Word quack n
s i g
Duck cross n over
Aturan tantangan:
- Kami selalu pertama kembali berjalan garis lurus setelah kami 'menyeberang' sebelum kita bisa menyeberang lagi (lihat test case di atas {1} - di mana
ing
sama, tetapi setelah kami menyeberangi
, pertama-tama kita harus kembali berjalan lurus (dengan demikian mengabaikann
), sebelum kita bisa menyeberang lagig
). - Input dapat memiliki panjang yang berbeda, dalam hal ini semakin lama berjalan dalam garis lurus (lihat kotak uji 1, 2, 4 & 6).
- Kedua input bisa sama (lihat test case 3).
- Masukan tidak akan mengandung tab atau baris baru.
- Spasi diabaikan sebagai karakter yang sama (sebagai case tepi) , dalam hal ini karakter selanjutnya (non-spasi) setelah itu - jika ada - yang melintas sebagai gantinya (lihat test case 3, 5 & 6).
- Input tidak boleh memiliki karakter yang berdekatan (non-spasi) pada posisi yang sama, dalam hal ini keduanya berjalan dalam garis lurus secara horizontal (lihat kotak uji 2).
- Bahkan jika karakter pertama sama, kami selalu memulai dua baris terpisah (lihat kasus uji 3 & 6).
- Ruang trailing dan satu garis baru trailing adalah opsional.
- Anda dapat berasumsi bahwa input hanya akan berisi karakter ASCII yang dapat dicetak (baris dan tab baru dikecualikan).
- Input peka huruf besar-kecil, sehingga
A
dana
tidak sama, dan tidak akan melintas (lihat uji kasus 7). - Kedua panjang input akan selalu minimal 2.
- Input & output dapat dalam format apa pun yang masuk akal. Dapat berupa String tunggal dengan baris baru; array-string / daftar; dicetak ke STDOUT; Array karakter 2D; 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, silakan tambahkan penjelasan jika perlu.
Kasus uji:
1. Input: "Words crossing over" & "Ducks quacking"
1. Output:
Word quack n
s i g
Duck cross n over
2. Input: "bananas" & "ananas"
2. Output:
bananas
ananas
3. Input: "I see my twin!" & "I see my twin!"
3. Output:
I e y w n
s e m t i !
I e y w n
4. Input: "Is the weather nice?" & "Not really, no.."
4. Output:
Is th ally, no..
e
Not r weather nice?
5. Input: "Codegolf & Programming Puzzles" & "The golfer might solve puzzles"
5. Output:
Code o f & Programming P z l s
g l u z e
The o fer might solve p z l s
6. Input: "Can you turn the lights off?" & "Can you try to solve this?"
6. Output:
C n o urn the ve s off?
a y u t l t
C n o ry to so igh his?
7. Input: "one Ampere" & "two apples"
7. Output:
one Am les
p
two ap ere
8. Input: "Words crossing" & "Words Quacking"
8. Output:
W r s cross n
o d i g
W r s Quack n
Arang , 69 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
Python 2 ,
217210 byte-1 byte terima kasih kepada officialaimm
Cobalah online!
sumber
s=' '
Haskell,
142138 byteCobalah online!
Bagaimana itu bekerja:
sumber
g 0
. Mengenai kata yang hilang: "a" seperti pada "variabel bernama a", tapi itu memang membingungkan, jadi saya menulis ulang.a
. :) Saya pribadi menggunakana
penjelasan saya ketika menunjukkan variabel, meskipun biasanya cukup jelas tanpa. Terima kasih atas klarifikasi, dan saya memang mengharapkan perbaikan bug yang cukup mudah untuk itu.'
diganti dengan tanda centang kembali) dalam komentar lagi, yang ingin saya katakan .. (Jadi saya menggunakan tanda centang kembali di sekitar variabel, di dalam blok kode saya.)JavaScript (ES6), 112 byte
Tidak Disatukan:
Kasus uji:
Tampilkan cuplikan kode
sumber
APL (Dyalog) , 50 byte
Cobalah online!
⍵⍀⍨¯1*⍳4
memberikan matriks:(titik mewakili spasi). Kolom-kolomnya akan diputar dengan jumlah yang berbeda sehingga tiga baris pertama berakhir seperti hasil yang diinginkan - maka
3↑
mendekati awal. Algoritma lainnya menghitung jumlah rotasi.Di dalam parens:
3↑⍵
membuat matriks sepertidan
2=⌿
membandingkan barisnya secara berpasangan, yaitu string pertama vs string kedua dan string kedua vs semua spasi spasi.Kami tertarik di mana yang pertama benar (1) dan yang kedua salah (0), jadi kami mengurangi dengan
>⌿
untuk mendapatkan nama vektor booleana
.Sekarang, dalam setiap rentangan 1-s kita perlu untuk nol kejadian genap karena tidak ada dua tikungan dapat terjadi di samping satu sama lain. Pertama kita mendapatkan penomoran seperti:
oleh, secara longgar, ganti
a[i]
dengana[i]*max(a[i-1]+1, a[i])
sampai hasilnya stabil:,{⍵⌈a×1+1,¯1↓⍵}⍣≡
dan kita ambil mod 2:2|
Sekarang kita tahu di mana tikungan akan terjadi. Kami menyalin masing
1
- masing ke kiri -2∨/
(berpasangan "atau"):dan hitung jumlah parsial -
+\
Itu memberi kita jumlah rotasi kolom yang kita butuhkan di awal. Modulo 4 tersirat.
sumber
Perl 5 , 211 byte
Cobalah online!
# Perl 5 , 234 byteMemperbaiki bug yang ditunjukkan Kevin
Cobalah online!
sumber
"Can you turn the lights off?" & "Can you try to solve this?"
saya sepertinya mendapatkan kesalahan:Modification of non-creatable array value attempted, subscript -1 at .code.tio line 1, <> line 2.
Apakah ini bug, atau apakah saya melakukan sesuatu yang salah? Inilah TIO.05AB1E , 31 byte
Port dari @ETHproductions menjawab , tetapi dengan dua perbedaan kecil:
1) Saya mengambil input sebagai daftar karakter 2D alih-alih daftar string.
2) The
counter_variable
di 05AB1E adalah 0 secara default, bukan 11 (atau 3) sepertiB
di Japt, jadiNĀ
ditambahkan sebagai cek tambahan di dalam peta (dan saya memutar ke arah kanan, bukan ke kiri).Cobalah online atau verifikasi semua kasus uji .
Penjelasan:
sumber