Diberikan string sebagai input, cetak string baru dengan setiap huruf didorong ke kanan oleh indeks alfabet masing-masing.
Kita semua tahu bahwa A lambat dan Z adalah huruf cepat. Ini berarti bahwa Z akan bergeser ke kanan dengan 25 ruang, A tidak bisa bergeser sama sekali dan B akan digeser oleh 1 ruang.
Program Anda hanya perlu menangani huruf besar dari AZ, dan tidak ada karakter lain, tidak ada spasi putih, tidak ada tanda baca.
Perhatikan bahwa jika 2 atau lebih huruf jatuh ke ruang yang sama setelah bergeser, karakter terbaru akan digunakan. (Contoh: BA
-> A
)
Contohnya
"AZ" -> "A Z"
"ABC" -> "A B C"
"ACE" -> "A C E"
"CBA" -> " A"
"HELLOWORLD" -> " E H DLL OLO R W"
Aturan
- Ini adalah kode-golf , jadi kode terpendek dalam byte bahasa apa pun yang menang.
Celah standar dilarang.
Input harus diterima sebagai string.
- Anda dapat mencetak hasilnya ke
stdout
atau mengembalikan string. - Sebuah tunggal miring spasi dan / atau baris baru diperbolehkan.
- Anda juga dapat menggunakan huruf kecil sebagai input atau output, tetapi hanya menggunakan kedua case.
Jawaban:
Python 2 , 81 byte
Cobalah online!
sumber
MATL , 11 byte
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Pengindeksan MATL berbasis 1. Trik golf ini digunakan di sini. Yang lain ini tidak dapat digunakan karena kita membutuhkan string kosong, bukan array numerik kosong.
Pertimbangkan input
'ACE'
sebagai contoh. Isi tumpukan ditampilkan dari bawah ke atas.sumber
(
: nice builtinǝ
? Ah, tapi itu sepertinya tidak membuat vektor pada input kedua / ketiga0
s dan ditampilkan0
sebagai ruang.R ,
14013312974 byteMenyimpan satu ton byte yang porting pendekatan nilai ASCII seperti orang lain. Sedih aku tidak memikirkannya sebelumnya :(
Cobalah online!
jawaban asli, 129 byte:
Cobalah online!
menghasilkan daftar
o
ruang yang terlalu panjang , kemudian beralih melaluis
, mengganti nilai-nilaio
dengan nilai yang benar dan memperbaruiF
, posisi karakter paling kanan. Kemudian cetakF
elemen pertamao
tanpa pemisah di antara mereka.sumber
05AB1E ,
2016 byte-4 byte terima kasih kepada Emigna
Cobalah online!
sumber
ð₄×svyAuykN+ǝ}ðÜ
setidaknya. Juga, apakah ada jaminan bahwa string input bergeser tidak lebih besar dari 1000 karakter? Jika tidak,g₂+ð×
harus bekerja.JavaScript (ES6), 81 byte
Agak membangun dari jawaban yang tidak lengkap Rick Hitchcock tetapi akhirnya agak berbeda.
Tempatkan karakter ke dalam indeks mereka masing-masing dari array kosong, kemudian gunakan array array (
[...a]
) untuk mengubah elemen yang hilang menjadiundefined
, memungkinkanmap
untuk mengganti elemen kosong dengan spasi.Uji Kasus
Tampilkan cuplikan kode
sumber
Perl 5, 42 byte
41 byte kode +1 untuk
-p
. The\x1b
s dalam kode karakter escape literal.Bergantung pada urutan pelarian ANSI untuk memposisikan kursor dan karenanya tidak bekerja pada TIO.
Pemakaian
sumber
-F
): Cobalah online!Java (OpenJDK 8) ,
207191189183178174173170 byteCobalah online!
sumber
Perl 5 , 41 + (
-F
) = 43 byteCobalah online!
Hanya untuk @lynn
sumber
brainfuck , 127 byte
Cobalah online!
Penjelasan
sumber
Proton , 78 byte
Cobalah online!
69 byte dengan mem-porting solusi Lynn:
x=>{t=[]i=65for k:x{t+=[' ']*26t[ord(k)-i]=k;i--}"".join(t).rstrip()}
sumber
Jelly , 20 byte
Cobalah online!
sumber
Haskell ,
9088 byteCobalah online!
sumber
Japt , 23 byte
Uji secara online!
Upaya pertama, mungkin dapat ditingkatkan ...
sumber
V
sebagai gantiU
: ethproductions.github.io/japt/…Bahasa Wolfram (Mathematica) , 76 byte
Mengambil daftar karakter sebagai input. Ini menghasilkan beberapa pesan kesalahan yang aman untuk diabaikan.
Saya memasukkan
Print
danCharacter
memerintahkan di footer tautan TIO untuk kemudahan penggunaan. (Character
perintah cukup mengkonversi string ke daftar karakter)Cobalah online!
sumber
LetterNumber
Apakah ada built-in untuk menemukan posisi huruf dalam alfabet? Omong kosong, itu konyol.J,
3731 byte[`]`(' '#~(1+>./)@])}(i.@#+65-~a.&i.)
-6 byte berkat FrownyFrog
penjelasan
Semuanya adalah sebuah kait:
Sisi kanan menghitung indeks baru untuk semua huruf.
Sisi kiri menggunakan bentuk gerund dari Mengamandemen
}
pertama untuk membuat sebuah string dari jumlah yang diperlukan ruang:(' '#~(1+>./)@])
. Dan kemudian menempatkan setiap huruf dari string asli ke dalam indeks yang sesuai dalam string semua-ruang.Cobalah online!
sumber
(i.@#+65-~a.&i.)
->(i.@#+65-~3&u:)
->(i.@#-65-3&u:)
->(#\-66-3&u:)
(]' '#~1+>./)
Haskell , 88 byte
Cobalah online!
sumber
Haskell, 88 byte
Cobalah online!
q
adalah daftar indeks akhir dari huruf-huruf dari string input (dengan offset65
). Lingkari semua indeks (mulai dari65
) dan temukan semua huruf untuk itu, tambahkan spasi. Ambil yang terakhir.sumber
C # (.NET Core) ,
11711084 byteDisimpan 7 byte berkat Ayb4tu .
Jenis pengembalian diubah dari
string
kechar[]
untuk menyimpan 26 byte.Cobalah online!
sumber
t[i+((int)n[i]-65)]
ket[i+n[i]-65]
.char -> int
konversi bersifat implisit.C # .NET,
89 Bytes87 Bytes-2 byte terima kasih kepada Lan H.
Cobalah secara Online!
sumber
for
-loop Anda untuk -2 byte.Kotlin,
207 byte189 byte187 byte177 byteJika bagian depan kosong tetap ada, saya hanya akan menelepon
trimEnd()
sajatrim()
.Tidak dijinakkan:
Mungkin Kotlin bukan bahasa terbaik untuk kode golf tetapi saya menyukai tantangan dan saya ingin membuat diri saya lebih akrab dengan perpustakaan standar Kotlin.
sumber
q / kdb +, 37 byte
Larutan:
Contoh:
Penjelasan:
Saya pikir ini adalah ide yang sama dengan solusi J, menghitung indeks yang benar untuk array input dan kemudian menetapkannya ke string kosong dengan panjang yang benar:
sumber
Jq 1.5 , 91 byte
Diperluas
Cobalah online!
sumber
Arang , 16 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
APL (Dyalog) , 26 byte
Lambda awalan anonim yang mengambil string input sebagai argumen dan mengembalikan string output. Mengasumsikan
⎕IO
( I ndex O rigin)0
, yang merupakan default pada banyak sistem.Cobalah online!
{
...}
lambda anonim;⍵
mewakili argumen≢⍵
penghitungan argumen⍳
dari banyak ɩ ntegers (0 ... LengthOfArgument-1)(
...)+
ditambah:⎕A⍳⍵
indeks argumen dalam lfabet huruf A besari←
strore ini
(for i ndices)⌈/
maksimum (reduksi)1+
tambahkan satu''↑⍨
ambil banyak karakter dari string kosong, padding dengan spasi sesuai kebutuhan⊢
hasil yang (berfungsi untuk memisahkani
dari''
)⍵@i
mengubah bahwa dengan huruf argumen di dalami
indekssumber
SOGL V0.12 , 10 byte
Coba Di Sini!
Penjelasan:
sumber
Pyth ,
4438 byteDipukul 44 masih 44 :(
Pemula berdarah Pyth.
Disimpan 6 byte berkat @Mr. Xcoder.
Cobalah online!
Bagaimana?
sumber
K*d+lz26Vlz K=XK-C@zN-65N@zN;.WqeHdPZK
.WqeKd K=PK;K
diganti dengan.W
(sementara fungsional) dan argumennya tentu saja, danFNrZlz
dapat digantiVrZlz
, tetapirZ...
berartiU...
, danU
dihasilkan secara otomatis olehV
. JadiFNrZlz
menjadiVlz
Batch,
418331 byteHanya bekerja dengan huruf besar dan membutuhkan beberapa detik untuk string yang lebih panjang.
Pelajari trik baru di sini, konversi karakter ke ASCII menggunakan
%=exitcodeAscii%
. Juga,if defined
dan akses "array" menggunakancall
. Juga, golf dengan hampir 100 byte adalah pelatihan golf kode batch yang baik.Perhatikan spasi tambahan di
set z=set
.sumber
Ruby , 68 byte
Cobalah online!
sumber
IBM PC DOS 8088 Assembly ,
3433 byteTidak disatukan (tidak dirangkai):
Ini adalah PC DOS yang dapat dieksekusi yang mengambil string input dari baris perintah dan mencetak versi "lebih cepat" ke layar. Membutuhkan minimal DOS 1.0 ... mudah-mudahan Anda punya setidaknya itu.
Keluaran
sumber
PHP,
127123 byteCobalah online
Harus memperbaiki bug yang tidak akan menghasilkan 'A' ...
sumber