Kami tidak memiliki cukup (semi-) tantangan mudah untuk pemula. Semakin banyak yang mudah sudah diambil. Jadi saya mencoba menemukan sesuatu yang mungkin dapat dicapai oleh pemula, tetapi itu bukan duplikat.
Memasukkan:
Satu string terpisah dengan OS baris baru Anda (yaitu \r\n
),
atau array dengan beberapa string.
Output - Tangga :
Hapus semua simbol non-alfabet dan non-numerik. Jadi yang tersisa hanyalah[A-Za-z0-9]
. Dan kemudian 'membangun tangga'; pada dasarnya memesannya panjang dengan yang terkecil di atas dan terluas di bagian bawah.
Aturan tantangan:
- Ketika dua string memiliki panjang yang sama, kami menggabungkannya dengan satu sama lain sebagai satu string besar (urutannya tidak masalah, jadi itu bisa dari pertama hingga terakhir atau terakhir ke pertama, yang mana dari dua yang Anda inginkan).
- Aturan di atas dapat ditumpuk ketika string yang digabungkan memiliki panjang yang sama lagi (lihat uji kasus 2).
Aturan umum:
- Inputnya adalah STDIN dan hanya berisi karakter ASCII. Dan outputnya adalah STDOUT.
- Kasing keluaran harus sama dengan input.
Setiap pengiriman harus merupakan program lengkap yang dapat dikompilasi dan dijalankan, jadi bukan hanya metode / fungsi.EDIT: Saya agak baru, jadi mungkin memang lebih baik menggunakan default mulai sekarang, meskipun saya lebih suka program lengkap sendiri. Maaf untuk semua orang yang telah memposting program lengkap. Jangan ragu untuk mengedit, dan saya akan mencoba untuk tidak mengubah pos pertengahan tantangan lain kali.- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang. Saya mungkin menerima jawaban terpendek dalam satu tahun dari sekarang.
Jangan biarkan jawaban kode-golf mencegah Anda memposting bahasa non-codegolf golf seperti C # dan sejenisnya! Cobalah untuk memberikan jawaban terpendek untuk bahasa pemrograman apa pun. - Jangan ragu untuk menggunakan bahasa yang lebih baru dari pertanyaan ini.
Kasus uji:
Input 1:
This is a sample text,
that you will have to use to build stairs.
The wood may be of excellent quality,
or pretty crappy almost falling apart and filled with termites.
Bla bla bla - some more text
Ok, that will do
Output 1:
Okthatwilldo
Thisisasampletext
Blablablasomemoretext
Thewoodmaybeofexcellentquality
thatyouwillhavetousetobuildstairs
orprettycrappyalmostfallingapartandfilledwithtermites
Input 2:
A
small
one
that
contains
equal
length
strings
for
the
special
rule
Output 2:
A Or alternatively: A
length length
oneforthe theforone
smallequal equalsmall
stringsspecial specialstrings
thatrulecontains containsrulethat
Langkah-langkah yang dijelaskan tentang 2:
Urutan pertama panjang:
A
one
for
the
that
rule
small
equal
length
strings
special
contains
Penggabungan pertama:
A
oneforthe
thatrule
smallequal
length
stringsspecial
contains
Urutan kedua panjang:
A
length
thatrule
contains
oneforthe
smallequal
stringsspecial
Penggabungan kedua:
A
length
thatrulecontains
oneforthe
smallequal
stringsspecial
Urutan ketiga panjang:
A
length
oneforthe
smallequal
stringsspecial
thatrulecontains
Input 3:
Test,
test.
This
is
a
test.
Output 3:
a Or alternatively: a
is is
TesttestThistest testThistestTest
Input 4:
a
bc
d!
123
Keluaran 4:
123 Or alternatively: 123
adbc dabc
contains
tidak seharusnya dalam output 2. Ini akan bergabung denganthatrule
Jawaban:
Sekam , 11 byte
Cobalah online!
Kulit lebih muda dari tantangan ini (yang tidak membuat perbedaan secara resmi, tapi tetap saja).
Penjelasan
sumber
mf□
, Anda harus cemburu. Ketika "kelompok panjang" adalahġL
, Anda harus kagum.Python 3, 264 Bytes
Saya tidak pandai kode golf jadi saya yakin ini bukan jawaban Python 3 terbaik. Ini menggunakan rekursi dan perintah dict dengan semua kata untuk setiap panjang.
Mengambil input dari stdin sebagai daftar, misalnya, mengujinya dengan daftar ini:
Akan menampilkan:
sumber
filter(str.isalnum, l)
sebagai gantinya"".join
bagianRetina,
6963 byteCobalah online!
sumber
[^\w¶]|_
. Meskipun saya masih tidak yakin itu optimal.Oracle SQL 11.2, 346 byte
Garis-garis dalam string input dipisahkan oleh '¤'. Dengan begitu tidak perlu membuat tabel untuk digunakan sebagai input.
Pertanyaan:
Tidak bermain golf
sumber
[\W_]
0-9
dengan\d
. Mungkin aturan regex berbeda dalam sql daripada di python / php / javascript? (js masih merupakan kasus khusus karenaHaskell, 129 byte
Menerima dan mencetak array string. Jika hasilnya dapat dikembalikan dari fungsi (berbeda dengan dicetak ke stdout), Anda dapat menghilangkan
print.
dan menyimpan 6 byte.Cara kerjanya (perhatikan, saya menggunakan
x
untuk parameter input yang tentu saja tidak muncul dalam versi pointfree di atas):sumber
Python 3,
184180 byteSebuah fungsi yang mengambil input, dengan argumen, sebagai daftar string dan mencetak hasilnya ke STDOUT. Eksekusi menimbulkan kesalahan (karena penggunaan operator + sebelum pernyataan cetak), tetapi tidak sebelum output telah dicetak.
Bagaimana itu bekerja
Cobalah di Ideone
sumber
J , 48 byte
Cobalah online!
ungolfed
penjelasan
(#~e.&AlphaNum_j_)&.>
hapus non alphanum(#&> ,&.>//. ])
menggabungkan item dengan panjang yang sama^:_
terus kombinasikan sampai berhenti berubah(/: #&>)
urutkan berdasarkan panjangnyasumber
Javascript
198188186179 byteIni adalah program javascript golf terpanjang kedua saya
Mungkin bisa bermain golf lebih lanjut
sumber
t
variabel?.split()
Anda bisa menggunakan[y]()
Perl 5 , 112 byte
Cobalah online!
sumber
Jelly , 17 byte
Cobalah online!
Tidak yakin mengapa
Ẏf¥€ØWṖ¤L€ĠịµÐLY
tidak berhasil ...Penjelasan:
sumber
Pyth, 22 byte
Coba di sini.
Penjelasan:
sumber
Pyth, 39 byte
Kembali bermain golf!
Ada programnya:
Uji di sini!
Penjelasan
sumber
R
danL
bukannyam
Java 8, 268 byte
Void lambda menerima yang bisa berubah
List<String>
(yaitu mengimplementasikanadd
danremove
; misalnyaArrayList
). Output dicetak ke standar keluar, dibatasi oleh baris baru, dengan baris tambahan tambahan. Diputar keConsumer<List<String>>
.Cobalah secara Online
Ini akhirnya menjadi jauh lebih lama dari yang saya harapkan. Seperti yang diamati Kevin, ini lebih rumit daripada yang terlihat pada pandangan pertama.
Lambda yang tidak tersentuh
Pertama, saya mengurangi input di tempat menjadi huruf dan angka. Saya kemudian memproses input dalam kelompok dengan panjang. Saya menambahkan item ke yang pertama dalam daftar sampai panjang berikutnya tercapai, menghapusnya saat saya pergi. Jika hanya elemen pertama yang digunakan, itu akan menjadi satu-satunya string dengan panjang itu, jadi itu dicetak. Jika tidak, string yang bergabung ditambahkan ke daftar untuk iterasi lain. Saya mengurutkan daftar berdasarkan panjang setiap iterasi sebelum digunakan.
Saya mulai dengan solusi yang bagus yang menggunakan antrian prioritas untuk melacak string menengah. Sayangnya,
java.util.PriorityQueue<String>
ini cukup panjang (dan menggunakan jenis mentah lebih lama), jadi harus pergi.sumber
Japt v2.0a1
-h
, 11 byteInput & output sebagai array string.
Cobalah
sumber
[a-zA-Z0-9]
alih-alih[a-zA-Z]
).JavaScript, 119 byte
Saya merasa seperti ini harusnya jauh lebih pendek ...
Termasuk 2 baris baru dalam output.
Cobalah online
sumber
g
untuk 118Perl 6 , 85 byte
Cobalah online!
Input dan output sebagai daftar string.
sumber
Pyth, 21 byte
Input adalah daftar string. Cobalah online di sini , atau verifikasi semua test case di sini .
sumber
05AB1E , 16 byte
Masukan sebagai daftar string.
Cobalah secara online atau verifikasi semua kasus uji .
Bisa jadi 14 byte
εžKÃ}Δé.γg}J}»
jikaΔ
akan bekerja dengan daftar string juga ..Penjelasan:
sumber
Powershell, Windows 10, 63 byte
Jadi masukan ...
dan kode ...
Itu mencakup input / output 1, bekerja pada 2 dan 3 ...
sumber