Buat program yang mengambil kata yang Anda input, dan tambahkan kata itu ke bagian belakangnya sendiri dikurangi huruf pertama, lalu ulangi sampai semua huruf hilang. Misalnya, cat
akan menjadi catatt
, dan hello
akan menjadi helloellolloloo
.
Masukkan salah
satu dari 26 huruf alfabet bahasa Inggris. Mungkin ada beberapa kata yang dipisahkan oleh spasi, dan perubahan harus diterapkan ke setiap kata.
Keluaran
Kata-kata dimasukkan, dengan setiap kata diletakkan setelahnya dengan huruf pertama hilang, dan kemudian dengan huruf kedua hilang, dan seterusnya sampai tidak ada lagi huruf untuk ditambahkan.
Lebih banyak contoh:
ill eel
output illlll eelell
laser bat
output laserasersererr batatt
darth vader
output dartharthrththh vaderaderdererr
Ini kode golf, jadi kode terpendek menang.
Klarifikasi:
Anda dapat memperlakukan input atau output sebagai daftar. Anda dapat memisahkan kata menggunakan baris baru dan bukan spasi. Anda dapat menambahkan spasi tambahan ke input.
1.
Harap perbarui spesifikasi dengan tunjangan baru (array I / O, ruang tambahan, dll.)2.
Mohon informasikan solusi yang ada jika ada yang bisa menghemat byte dengan memanfaatkannya.Jawaban:
Japt
-m
,63 byteInput dan output adalah susunan kata.
Cobalah
Penjelasan
sumber
£
dua byte di UTF-8?brainfuck ,
6056 byteCobalah online!
Membutuhkan ruang tambahan dan mencetak ruang terdepan. Kedua hal ini dapat dielakkan, tetapi berakhir pada 112 byte .
Penjelasan
sumber
Haskell,
3621 byteCobalah online!
Sunting: -15 byte, karena format IO baru (daftar kata, bukan kata-kata yang dipisahkan spasi)
sumber
scanr (:) ""
dengantails
.import Data.List
yang menambahkan 17 byte ke skor.Perl
-p
,362523 byteCobalah online!
Ini adalah regsub tunggal. Pertama, ini cocok dengan semua batas kata atau karakter non-spasi:
Perhatikan bahwa setiap kecocokan ini harus diganti dengan sisa kata:
Kita bisa menyelesaikan ini dengan variabel khusus
$'
, yang menyimpan bagian dari string setelah pertandingan. Namun, kita perlu menerapkan regsub bersarangs/ .*//
untuk itu, yang menghilangkan semua yang melewati ruang pertama$'
, untuk menyingkirkan kata-kata yang tersisa di input.Terima kasih kepada @nwellnhof untuk 2 byte.
sumber
[^ ]
dengan\S
.Python 3 , 49 byte
Cobalah secara Online!
Ini mengambil keuntungan dari fakta yang
"".split()
mengembalikan array kosong sehingga bertindak sebagai pemeriksaan untuk kasus dasar dalam rekursi.sumber
Jelly , 3 byte
Cobalah online!
Tidak perlu
K
lagi karena array input / output sekarang diperbolehkan.sumber
ḊƬẎ)
(atauḊƬF)
, jika Anda mau).APL (Dyalog),
199 byte{⌽∊,\⌽⍵}¨
terima kasih kepada @ H.PWiz untuk jogging otak saya
Ini berfungsi karena semua string di APL adalah array karakter.
TIO
sumber
JavaScript (ES6), 33 byte
Disimpan 1 byte berkat @ShieruAsakoto
Format I / O: berbagai kata.
Cobalah online!
JavaScript (ES6), 35 byte
Format I / O: berbagai kata.
Cobalah online!
sumber
s=>s.replace(/\S+/g,g=s=>s&&s+g(s.slice(1)))
$'
(atau$<backtick>
).R ,
827567 byteCobalah online!
Beberapa byte disimpan berkat JayCe
Pisahkan output dengan baris baru.
The
sapply(...)
ekspresi menghasilkan vektor matriks / kolom dari substring yang sesuai, melapisi dengan""
yang diperlukan.write
lalu cetak elemen-elemen matriks,y
per baris, pisahkan dengan""
.sumber
...substring,1:1e6,1e6)...
atau serupabrainfuck ,
9493 byteCobalah online!
.[-]>[.>]<[<]>
untuk[.>]<[<]>[-]>
.Penjelasan
Cobalah online!
Atribusi
Koleksi konstan Brainfuck Esolang digunakan untuk muatan ruang awal.
sumber
05AB1E , 5 byte
Cobalah online!
Penjelasan
sumber
í€ηJí
(karena awalan adalah built-in 1-byte, bukan 2-byte seperti sufiks; masih memerlukan reverse-masing-masing namun pada awalnya, jadi jumlah-byte tetap 5).Vim , 47 byte (38 pukulan tombol)
Mulailah dengan input Anda sebagai satu-satunya baris dalam buffer Vim.
Penjelasan
Ini menempatkan setiap kata pada barisnya sendiri, beralih pada setiap baris, kemudian bergabung kembali dengan mereka semua. Istirahat jika kata-kata lebih panjang dari 99 karakter atau jika input Anda memiliki lebih dari 99 kata.
:s/<Space>/\r/g<CR>
mengganti spasi dengan baris baru (\r
)gg
posisi kursor di awal baris pertamaqa
mulai merekam makro a :yw
menarik sisa kataP
menempatkannya di belakang kursorlx
menghapus huruf pertama dari kata yang terakhirq
berhenti merekam makro aqb
mulai merekam makro b :99@a
mengeksekusi makro yang sembilan puluh sembilan kali (memperkenalkan batas karakter)j0
memposisikan kursor pada awal baris berikutnyaq
berhenti merekam makro b99@b
mengeksekusi makro b sembilan puluh sembilan kali (memperkenalkan batas kata)gg
posisi kursor di baris pertama99J
bergabung dengan sembilan puluh sembilan baris berikut dengan spasi (batas kata lagi)Untuk 2 byte lainnya (2 stroke kunci) Anda dapat memperpanjang batas kata menjadi 999. Lain 4 byte, 9999, dll.
sumber
Sekam ,
64 byte-2 byte terima kasih kepada Jonathan Allan (menerima input sebagai daftar)!
Cobalah online!
Penjelasan
Mengambil input sebagai daftar string dan memetakan fungsi berikut:
sumber
Retina 0.8.2 , 15 byte
Cobalah online! Catatan: spasi tambahan. Penjelasan:
Berpisah pada spasi.
Tambahkan sufiksnya ke setiap huruf. The
%
berarti bahwa kita hanya mendapatkan akhiran kata itu.Bergabunglah dengan spasi.
sumber
Pepe ,
167153 byteCobalah online!
sumber
Kode rakitan x86 16-bit, 24 byte
Panggil dengan si = pointer ke string sumber, di = pointer ke buffer output.
String sumber membutuhkan byte nol untuk mengakhirinya.
Kode ini sama dalam 16- atau 32- atau 64-bit (si / di menjadi esi / edi atau rsi / rdi).
Kode 32-bit berukuran dua byte lebih besar karena panggilan yang diperluas.
Kode 64-bit adalah tiga byte lebih besar lagi karena inc / dec rsi / rdi menarik awalan (tetapi jika diketahui bahwa mereka berada dalam ruang memori 32-bit, maka mereka dapat esi / edi lagi untuk menghindari penalti itu) .
sumber
MATL ,
1816 byteInput adalah array kata sel. Cobalah online!
Penjelasan
sumber
K4 / K (oK) , 9 byte
Larutan:
Cobalah online!
Penjelasan:
sumber
C ++ (dentang) , 174 byte
Cobalah online!
Ini kiriman pertama saya, dan saya tidak tahu apakah mengembalikan string daripada mencetak tidak apa-apa :)
sumber
return w!=""?
bisa jadireturn""!=w?
.Stax , 3 byte
Jalankan dan debug itu
Penjelasan:
sumber
Arang , 14 byte
Cobalah online! Catatan: Ruang tambahan. Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
C (gcc) , 79 byte
Cobalah online!
sumber
Pip
-s
, 11 byteMengambil daftar kata-kata yang dipisahkan oleh ruang dari stdin. Cobalah online!
Penjelasan
sumber
Ruby , 42 byte
Cobalah online!
sumber
Python 2 , 63 byte
Cobalah online!
sumber
Kanvas , 6 byte
Coba di sini!
5 byte dengan format output gila
sumber
C #,
11190 byteCobalah secara Online!
Dengan Mengubah input dan output ke array, saya menghemat beberapa byte:
Cobalah secara Online!
sumber
K (oK) ,
1713 byteCobalah online!
Awali fungsi anonim; Input diambil sebagai daftar string, yang pada gilirannya adalah daftar karakter.
Terima kasih @streetster untuk 4 byte.
Bagaimana:
sumber
{|,/,\|x}'
Common Lisp , 179 byte
Cobalah online!
Ini adalah percobaan pertama saya untuk bermain golf
sumber
car
alih- alihfirst
dancdr
alih-alihrest
menambah kiriman Anda.Lua , 70 byte
Cobalah online!
Penjelasan
Argumen dalam Lua disimpan dalam tabel
arg
mulai dari indeks 1. Operator unary#
mengembalikan ukuran tabel dan fungsis:sub(a,b)
mengembalikan substring berdasarkan string yangs
dibatasi oleh bilangan bulata
danb
, jika b tidak dilewati akan mengembalikan sisa string.Saya harus menggunakan
io.write()
daripadaprint()
menghindari garis putus-putus, dan menambahkanprint()
di akhir karena alasan yang berlawanan.sumber