Diberikan string ASCII yang dapat dicetak, membaginya menjadi daftar string yang tidak kosong dengan sub-string baru yang dimulai setiap kali karakter, yang sebelumnya tidak pernah terlihat dalam kasus yang sama, terjadi.
Contohnya
"mississippi" → ["m","i","ssissi","ppi"]
"P P & C G" → ["P"," P ","& ","C ","G"]
"AAA" → ["AAA"]
"Adam" → ["A","d","a","m"]
"" → []
Anekdot : Hasilnya akan memiliki antara 0 dan 95 elemen. Sub-string ke - 95 akan terus berlanjut sampai akhir karena pada saat itu, semua karakter ASCII yang dapat dicetak telah memulai sub-string, sehingga setiap karakter tambahan akan terjadi sebelumnya dan dengan demikian tidak dapat menyebabkan sub-string baru untuk dimulai.
"
dan'
sepertinya ide yang bagus.""
→[""]
dapat diterima?[""]
tidak valid. Mendesah.Jawaban:
Jelly , 4 byte
Cobalah online!
Penjelasan
Representasi internal string, yang ditampilkan oleh tautan TIO, sedikit berbeda.
sumber
Retina , 9 byte
Cobalah online!
Penjelasan
Cocokkan setiap karakter (
.
), buang kecocokan yang diulang (q
), buang kecocokan pertama (1,
), dan masukkan umpan baris di depan setiap kecocokan¶$&
.sumber
05AB1E , 11 byte
Cobalah online!
Penjelasan
sumber
¸«
bisaª
dalam versi baru 05AB1E.C,
756563 byteBerkat @Digital Trauma karena telah menghemat 10 byte dan terima kasih kepada @gastropner dan @ l4m2 karena masing-masing menghemat satu byte!
Mencetak baris baru terkemuka.
Cobalah online!
Tanpa baris baru terkemuka (71 byte):
Cobalah online!
sumber
{0}
=>{}
?Perl 6 ,
58 5240 byteCobalah
Cobalah
Cobalah
(input adalah daftar karakter, dan output adalah daftar daftar karakter)
Diperluas:
Output dari
classify
adalahDan
.sort
mengubahnya menjadi:».value
menghapus kuncisumber
HashMap
vs.LinkedHashMap
di Java di mana urutannya didasarkan pada memori vs. urutan penyisipan?J , 7 byte
Cobalah online!
Penjelasan
Kesempatan Nub sieve untuk bersinar!
sumber
APL (Dyalog Unicode) , 8 byte SBCS
Cobalah online!
sumber
05AB1E , 8 byte
Cobalah online!
Selalu akan menghasilkan 1 baris sebelumnya, yang konstan dan tidak menunjukkan perpecahan, alternatif 10-byte yang tidak menampilkan baris sebelumnya adalah
Ùvyy¶ì.;}¦
, Anda dapat mencobanya di sini . Menurut Adam, baris baru sebelum atau sesudahnya dapat diterima.Setelah setiap iterasi kita dapatkan:
Yang mana:
sumber
ÙSD¶ì.;
. Tidak yakin mengapa kami tidak memikirkan itu sebelumnya: PHaskell , 39 byte
Cobalah online!
Menyisipkan simbol baris baru sebelum setiap karakter yang muncul untuk pertama kalinya, menghasilkan string yang dipisahkan baris baru, dengan baris baru yang memimpin. Tambahkan
lines.
untuk menghasilkan daftar.Haskell , 55 byte
Cobalah online!
Berulang kali mengambil awalan karakter pertama ditambah karakter non-unik yang mengikutinya.
sumber
lines
.tail.lines
untuk menghapus string kosong tambahan sekarang saya memikirkannya.APL (Dyalog) , 9 byte
Terima kasih, Erik the Outgolfer untuk menghemat 1 byte!
Cobalah online!
Penjelasan:
⍳⍨
: Untuk setiap karakter, dapatkan indeks kemunculan pertamanya. misalnyamississippi -> 1 2 3 3 2 3 3 2 9 9 2
⍳∘≢
: Rentang dari 1 hingga panjang input.∊
: Keanggotaan. misalnya1 2 3 4 5 6 7 8 9 10 11∊1 2 3 3 2 3 3 2 9 9 2 -> 1 1 1 0 0 0 0 0 1 0 0
⊢⊂⍨
: Mempartisi string input dengan partisi baru mulai dari1
s pada vektor di atassumber
fg
dan monadikf∘g
berperilaku sama)∊
bukannya=
?Japt , 11 byte
Uji secara online!
Penjelasan
Hal ini terinspirasi oleh Sihir Octopus Mm 's solusi 05AB1E .
sumber
iRUbY
!JavaScript (ES6), 37 byte
Disimpan 7 byte: baris baru terkemuka diizinkan secara eksplisit (Terima kasih @Shaggy!)
Mengambil input sebagai array karakter. Menghasilkan string yang dipisahkan baris baru.
Uji kasus
Tampilkan cuplikan kode
sumber
brainfuck, 66 byte
Diformat:
Cobalah online
Baris baru terdepan dalam output (yang hanya dicetak jika inputnya tidak kosong) dapat dihilangkan dengan biaya 5 byte dengan mengganti badan
x
loop utama (paling luar) dengan.>,[x]
.sumber
Jelly , 6 byte
Cobalah online!
sumber
K4 , 19 byte
Larutan:
Contoh:
Penjelasan:
8 byte hanya untuk menangani
""
...sumber
Python 2 ,
8174 byteCobalah online!
sumber
set
tidak menjaga ketertiban, anti-bukti ->s='c'*6+'a'*100+'b'
Python 2 , 47 byte
Cobalah online!
Menghasilkan string yang dipisahkan baris baru. Hampir tidak mengalahkan versi program:
Python 2 , 48 byte
Cobalah online!
sumber
Perl, 30 byte
Termasuk
+1
untukp
Berikan masukan tanpa tertinggal baris baru di STDIN. Output juga tanpa tertinggal baris baru:
Jika Anda tidak peduli tentang memimpin dan mengikuti baris baru, ini
25
(+3
karena-p
karena kodenya berisi'
) juga berfungsi:sumber
${$&}++
. Ini tidak sekuat itu, tetapi mungkin cukup untuk tantangan ini? Juga, sudah ada konsensus tentang meta yangperl -p
tidak memerlukan byte tambahan, Anda hanya perlu memiliki header sebagaiPerl with `-p`
ganti hanya Perl. Saya mencoba mengingat untuk melakukan itu sendiri ...1
valid, dalam halv
ini diperlukan. Mengenai penghitungan, saya kebanyakan mengikuti codegolf.meta.stackexchange.com/a/7539/51507 yang bagi saya adalah meta post yang paling konsisten tentang menghitung perl.&~v0
untuk meraih karakter pertama. Terima kasih telah bergabung dengan situs ini dan berbagi keahlian lama Anda."
alih-alih'
dengan-e
, dan kemudian Anda dapat menghitung-ep
sebagai +1 daripada +3. (Diuji.)JavaScript,
615452 byteMengambil input sebagai array karakter.
Cobalah
sumber
R ,
9487 byteCobalah online!
Mengembalikan daftar substring (mungkin kosong).
Terima kasih kepada Michael M karena telah menghemat 7 byte!
sumber
function(s,n=nchar(s),g=substring)g(s,d<-which(!duplicated(g(s,1:n,1:n))),c(d[-1]-1,n))
akan lebih pendek - dan tentu saja sedikit lebih buruk ...substring
bukannyasubstr
?if(n)
di sana karenasubstring
melempar kesalahan untuk input string kosong.substr
mengembalikan vektor dengan panjang yang sama dengan input pertamanya sementarasubstring
mengembalikan satu dengan panjang yang sama dengan input terpanjangnya.Stax , 8 byte
Jalankan dan debug online
Representasi ascii dari program yang sama adalah ini.
Untuk setiap karakter, ia terpecah ketika indeks karakter saat ini adalah posisi saat ini.
sumber
> <> ,
22 1714 byte-1 byte terima kasih kepada Emigna
Cobalah online!
Mencetak baris baru yang memimpin dan tertinggal.
Ini melacak surat mana yang sudah muncul dengan
p
menggunakan salinan karakter di tempat yang sesuai pada baris kedua, dan mencetak baris baru jika nilai yang diambil dari posisi itu bukan 1. Berakhir dalam kesalahan ketika mencoba untuk mencetak-1
sumber
g/p
! 16 byteHaskell, 62 byte
Cobalah online!
sumber
JavaScript (ES6), 68 byte
Mengambil input sebagai daftar karakter.
Kasus uji:
Tampilkan cuplikan kode
sumber
[""]
dapat diterima untuk kasus tes terakhir. Tapi ternyata tidak . :-(PHP, 317 byte
Cobalah online!
sumber
Merah , 79 byte
Cobalah online!
Tidak Disatukan:
sumber
SNOBOL4 (CSNOBOL4) ,
1159177 byteCobalah online!
Mencetak substring yang dipisahkan oleh baris baru.
Penjelasan:
baris
S
(untukSPLIT
) tidak benar-benar terpecah, tetapi sebaliknya mengekstrak karakter pertamaN
dan menyimpannya (.
) keY
. PadaF
penyakit, ia melompat keEND
. Pertandingan hanya akan gagal ketikaN
string kosong. Jadi, ketika input kosong, ia langsung melompat keEND
dan tidak menghasilkan apa-apa.S = S Y
merangkaiY
keS
.SPAN(S)
greedily mencocokkan run karakter dalamS
, dan mengirimkannya (.
) keOUTPUT
, setting (.
)N
keREM
karakter ainingN
(jika ada). Lalu ia melompat kembali keS
.sumber
PowerShell, 73 byte
Pemakaian
sumber
Ruby ,
656258 byteCobalah online!
Seorang lambda menerima string dan mengembalikan serangkaian string.
Pendekatan: Untuk setiap indeks, tambahkan karakter pada indeks itu
s
ke dalam array hasil, atau ke string terakhir dalam array hasil.String#index
mengembalikan indeks dari argumen pertama.-2 byte: Menginisialisasi
a
sebagai argumen percikan alih-alih pada barisnya sendiri. Terima kasih, Nilai Tinta !-1 byte: Gunakan
c=s[i]
...c
bukans[i]
...s[i]
. Terima kasih, Nilai Tinta !-4 byte: Gunakan
.times
sebagai ganti.map
sumber
Java 8,
193169155151 byte-14 byte terima kasih kepada @raznagul (untuk sesuatu yang jelas entah bagaimana saya merindukan diri saya sendiri ..)
-3 byte terima kasih kepada @OOBalance (lagi untuk sesuatu yang jelas saya entah bagaimana merindukan diri sendiri ..: S)
Penjelasan:
Cobalah online.
sumber
if(l<1)
. Jikal
adalah0
loop tidak harus dilaksanakan pula sebagai0<0
adalahfalse
.i=0
dua kali. Anda dapat menyimpan 3 byte dengan menjatuhkan yang kedua:for(;i<l;i++)