(sangat terinspirasi oleh Elemen string pada indeks yang ditentukan )
Diberikan string s
dan integer yang n
mewakili indeks masuk s
, output s
dengan karakter pada n
posisi -th dihapus
Pengindeksan 0 dan pengindeksan 1 diizinkan.
- Untuk pengindeksan 0,
n
akan menjadi non-negatif dan kurang dari panjangs
. - Untuk pengindeksan 1,
n
akan positif dan kurang dari atau sama dengan panjangs
.
s
hanya akan terdiri dari karakter ASCII yang dapat dicetak ( \x20-\x7E
, atau
melalui ~
).
Input / output yang masuk akal diizinkan. Celah standar berlaku.
Testcases (0-diindeks):
n s output
0 "abcde" "bcde"
1 "abcde" "acde"
2 "a != b" "a = b"
3 "+-*/" "+-*"
4 "1234.5" "12345"
3 "314151" "31451"
Testcases (1-diindeks):
n s output
1 "abcde" "bcde"
2 "abcde" "acde"
3 "a != b" "a = b"
4 "+-*/" "+-*"
5 "1234.5" "12345"
4 "314151" "31451"
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
3
,314151
->31451
. Saya kira tidak.Jawaban:
C #,
2019 bytesumber
Alice ,
1312 byteTerima kasih kepada Leo karena telah menghemat 1 byte.
Cobalah online!
Baris pertama dari input adalah string, baris kedua adalah indeks berbasis 0.
Penjelasan
sumber
Japt , 2 byte
Cobalah online!
sumber
K (Kona), 1 byte
Harus cinta bawaan. Pengindeksan berbasis 0. Pemakaian:
sumber
Haskell ,
2824 Bytes-4 byte terima kasih kepada Laikoni, versi ini diindeks 1.
Jawaban lama:
Fungsi rekursif sederhana yang mengambil nilai, itu 0-diindeks.
Golf-code pertama kali saya jadi mungkin itu bukan solusi yang optimal. Baiklah.
sumber
Mathematica, 18 byte
1-diindeks
memasukkan
terima kasih Martin Ender
sumber
["abcde", {1}]
, dalam hal iniStringDrop
saja yang berhasil. Apa yang kamu pikirkan? (Anda mungkin ingin secara eksplisit menyebutkan bahwa itu 1-diindeks juga.) Saya selalu senang melihat orang-orang memposting jawaban Mathematica :)V , 3 byte
Cobalah online!
Ini menggunakan pengindeksan 1.
sumber
CJam , 4 byte
Cobalah online!
Penjelasan
sumber
Fungsi GCC c, 25
Pengindeksan berbasis 1.
Banyak perilaku yang tidak terdefinisi di sini jadi waspadalah terhadap velociraptors yang tersesat :
strcpy()
halaman manual mengatakan Jika menyalin terjadi antara objek yang tumpang tindih, perilaku tidak terdefinisi . Di sini jelas ada tumpang tindih dari string src dan dest , tetapi tampaknya berfungsi, jadi glibc lebih hati-hati atau saya beruntung.s+=n
terjadi sebelums-1
. Standar c tidak memberikan jaminan seperti itu, dan pada kenyataannya menyebut ini sebagai perilaku yang tidak terdefinisi. Sekali lagi, tampaknya berfungsi seperti yang dipersyaratkan dengan kompiler gcc di x86_64 Linux.Cobalah online .
sumber
strcpy
argumen perlu didorong dalam urutan kanan-ke-kiri, yang akan menjelaskan perilaku, tetapi Anda mengatakan Anda menggunakanx86_64
yang menggunakan register ... mungkin kompilator memutuskan untuk bermain golf kode yang dihasilkan dan memutuskan bahwa komputasi s + = n pertama adalah golfier!MATL , 3 byte
Menggunakan pengindeksan berbasis 1.
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Dalam versi yang dimodifikasi dengan semua kasus uji, kode berada dalam loop tak terbatas
`...T
hingga tidak ada input yang ditemukan. Pada akhir setiap iterasi, fungsi tampilan (XD
) secara eksplisit dipanggil, dan stack dihapus (x
) untuk menyiapkannya untuk iterasi berikutnya.sumber
Vim, 7 byte
Bagaimana itu bekerja:
Ia mengharapkan dua garis; satu dengan string dan satu dengan nomornya.
sumber
jD@"gox
Java 8, 39 byte
Coba di sini.
Java 7, 67 byte
Coba di sini.
sumber
s->n->new StringBuilder(s).deleteCharAt(n)+"";
meskipun lebih panjang.StringBuffer
sebagai gantiStringBuilder
codegolf. ;)Ruby , 16 byte
Cobalah online!
sumber
Haskell , 15 byte
Ini membutuhkan GHC 8.4.1 yang baru dirilis (atau lebih tinggi). Sekarang
<>
, sebagai fungsi pada Semigroup, ada di Prelude. Ini sangat berguna pada fungsi SemigroupCobalah online!
Karena tio menggunakan bersion yang lebih lama dari GHC, saya sudah mengimpor
<>
di header.sumber
R, 40 byte
Hanya untuk menunjukkan berbagai cara, tidak ada yang sangat kompak, Anda bisa bermain-main dengan string dalam R.
sumber
05AB1E , 5 byte
Cobalah online!
sumber
05AB1E , 6 byte
Cobalah online!
Penjelasan
sumber
Pyth, 3 byte
Coba di sini.
Mengambil indeks terlebih dahulu.
sumber
PHP, 42 Bytes
0 diindeks
Cobalah online!
sumber
JS (ES6),
413231 byteBerdasarkan ini . Mengambil input melalui currying, pertama adalah string, kedua adalah indeks.
-9 terima kasih kepada @JohanKarlsson
-1 terima kasih kepada @ETHproductions
sumber
Jelly , 3 byte
Program lengkap yang mengambil indeks (berbasis 1) dan string (dalam urutan itu) dan mencetak hasilnya.
Sebagai fungsi diadik ia mengembalikan daftar dua bagian.
Bahkan indeks dapat berupa daftar n indeks, dalam hal ini mengembalikan daftar n-1 bagian.
Cobalah online! , atau lihat test suite .
Bagaimana?
Sebagai contoh menggunakan beberapa indeks:
sumber
vim,
107Mengambil input 1-diindeks dalam format berikut:
Terima kasih kepada @DJMcMayhem selama 3 byte!
sumber
Java 8,
4541 byteDisimpan 4 byte berkat @ OlivierGrégoire
Kode golf pertama saya menjawab sesuatu selain C #, meskipun itu bukan yang terpendek untuk Java.
sumber
;
dalam lambda (-1 byte). 2. Di mata saya, Anda tidak perlu mengembalikan aString
. Saya berpikir bahwa mengembalikanStringBuffer
tanpa+""
akan benar-benar valid (-3 byte). Contoh?BigInteger
merupakan representasi dari sebuah tak terbatasint
, dalam hal iniStringBuffer
/StringBuilder
adalah representasi dari bisa berubahString
s.Python 3 , 24 byte
Cobalah online!
sumber
JavaScript (ES6),
393433 byte56 byte disimpan berkat Arnauld .sumber
brainfuck , 14 byte
Cobalah online!
Membaca indeks satu byte berbasis nol segera diikuti oleh string.
sumber
Befunge-98 ,
352725 byte-4 byte terima kasih kepada @ eush77
Cobalah online!
1-diindeks, perhatikan bahwa input memiliki nol-byte tertinggal.
sumber
PHP, 41 byte, 35 byte tidak termasuk? Php
Diindeks 0
TIO
sumber
[$argv[2]]
indeks secara implisit membuat rentang? Juga, IIRC Anda dapat<?php
mematikannya, karena penerjemah PHP memiliki mode yang tidak memerlukannya, dan karena kami biasanya tidak menghukum untuk semacam indikasi dalam file apa bahasa itu.Japt ,
32 byteCobalah online!
sumber
1
R,
4847 byte(1 byte disimpan melalui penggunaan
el()
terima kasih kepada Giuseppe)Pisahkan string menjadi karakter-karakter individualnya, hapus angka ke-n dan kemudian gabungkan lagi.
Mungkin ada solusi yang lebih baik, strsplit () cukup sulit karena mengembalikan daftar.
sumber
pryr::f([function body])
menyimpan beberapa byte dan menggunakanel(strsplit(s,""))
menyimpan byte tetapi juga tidak bekerja pada TIO karena beberapa alasan.install.packages("pryr")
tetapi mungkin itu saya terlalu berharga!function(s,n)intToUtf8(utf8ToInt(s)[-n])
untuk 40 byte.function(s,n)sub(sub(0,n,"(.{0})."),"\\1",s)
untuk 44.