Diberikan string, tugas Anda adalah merobohkannya menjadi struktur seperti zig-zag seperti dijelaskan di bawah ini.
Lipat menjadi Zigzag
Kami akan mengambil string "Mississippi"
sebagai contoh:
Pertama, hasilkan awalan terpanjang yang terdiri dari karakter unik saja:
Mis
Saat Anda mencapai karakter duplikat C pertama , abaikan saja, dan hasilkan awalan terpanjang yang terdiri dari karakter unik dari string yang tersisa (
issippi
) secara vertikal, di bawah kemunculan pertama C :Mis i s
Ulangi proses ini, bergantian antara kelanjutan horizontal dan vertikal. Tetapi sekarang berhati-hatilah (pada langkah 1) untuk terus mengeluarkan secara horizontal dari kemunculan terbaru karakter duplikat, yang belum tentu yang terakhir, seperti dalam kasus ini:
Mis i sip ----- Mis i sip i
Aturan
- String hanya akan berisi karakter ASCII yang dapat dicetak, tetapi tidak akan berisi spasi apa pun.
- Anda dapat bersaing dalam bahasa pemrograman apa pun dan dapat mengambil input dan memberikan output melalui metode standar apa pun dan dalam format apa pun yang masuk akal 1 , sambil memperhatikan bahwa celah ini dilarang secara default. Ini adalah kode-golf , jadi pengiriman terpendek (dalam byte) untuk setiap bahasa menang.
- 1 Input: String / Daftar karakter / apa pun yang digunakan bahasa Anda untuk mewakili string. Output: Multiline tali, daftar string yang mewakili garis atau daftar daftar karakter / panjang-1 string, tapi tolong termasuk versi yang cukup cetak kode Anda dalam jawaban Anda, jika memungkinkan.
- Mengenai ruang tambahan, output mungkin berisi:
- Terkemuka / Trailing baris
- Membuntuti spasi pada setiap baris / di akhir
- Sebuah konsisten jumlah ruang terkemuka pada setiap baris
- Anda harus mulai menghasilkan secara horizontal, Anda mungkin tidak memulai secara vertikal.
Uji kasus
Input:
"Sempurna" "Mississippi" "Aneh tapi nyata" "Hal-hal sepele" "Cthulhu" "PPCG" "pOpOpOpOpOpOp" "ABCCCE" "ABCCCECCEEEEC" "abcdcebffg" "abca" "AAAAAAAA"
Output yang sesuai:
Perf c t
Salah saya menyesap saya
Od ies t
Triv Sebuah l ies t
Cthul kamu
P C G
PO OpO pOp hal
ABC C E
ABC CCE E EC
abcd e b fg
abc
SEBUAH A A SEBUAH
b
, karena Anda hanya harus mempertimbangkan duplikat dalam string yang tersisa , yaitu, setelah "bercabang". Setelah Anda mencapai yang keduac
, Anda menghasilkan awalan terpanjang dari karakter unik dari string yang tersisa , yaituebffg
(dengan demikian mengeluarkanebf
secara vertikal dan melanjutkan secara horizontal setelah itu), sehingga Anda tidak perlu khawatir tentang karakter dari bagian string yang sudah dikeluarkan sebelum beralih orientasi. Jika masih terasa tidak jelas bagi Anda, saya akan membuat contoh langkah-demi-langkah lain dengan test case ini.ABCcde
"A" ≠ "a"
. Output untukABCcde
hanyaABCcde
AAAAAAAA
Jawaban:
Wolfram Bahasa (Mathematica) , 143 byte
Cobalah online!
Berisi
0xF8FF
, yang sesuai dengan\[Transpose]
operator.Fiuh, sulit membuat hasilnya menjadi string. Mendapatkan setiap cabang tidak begitu sulit:
#//.{q___,a_,r___,a_,Longest@s___}:>{q,a,{r},{s}}&
sumber
Python 2 , 131 byte
Cobalah online!
-1 berkat Lynn .
Mencetak sebagai tupel daftar panjang-1 string. Output tercetak cantik .
sumber
Python 2 ,
184176175168 byte-5 byte terima kasih kepada Tn. Xcoder
Cobalah online!
sumber
\
? Juga, Anda dapat menampilkan sebagai daftar senar panjang-1, seperti yang saya lakukan dalam solusi saya, per OP.CJam , 81 byte
Cobalah online!
sumber