Diberikan string input yang hanya berisi karakter A-Z
,, a-z
dan spasi, hapus semua kemunculan versi huruf besar dan kecil dari karakter pertama string (jika karakter pertama A
hapus semua A
s dan a
s, jika karakter pertama adalah (spasi) hapus semua spasi), dan cetak hasilnya.
Contoh kasus:
Testing Testing One Two Three
->esing esing One wo hree
Programming Puzzles and Code Golf
->rogramming uzzles and Code Golf
How much wood would a woodchuck chuck if a woodchuck could chuck wood
->ow muc wood would a woodcuck cuck if a woodcuck could cuck wood
{space}hello world
->helloworld
welcome to WATER WORLD
->elcome to ATER ORLD
Ini adalah kode-golf , kode terpendek dalam byte yang menang!
Catatan:
- Input akan selalu berupa 2 atau lebih karakter yang valid.
- Output tidak akan pernah menjadi string kosong.
Jawaban:
Pyth, 7 byte
Cobalah online: Demonstrasi atau Test Suite
Bagus. Operator bifurkasi baru (baru berusia 8 hari) membantu di sini untuk menyelamatkan satu char Saya pikir ini adalah kode pertama, yang menggunakan fitur ini.
Penjelasan
sumber
brainfuck, 219 byte
(Membutuhkan kaset yang memungkinkan pointer untuk pergi ke negatif atau loop ke ujung jika mencoba. Juga mengharuskan
,
untuk mengembalikan 0 pada EOF. Dalam pengalaman saya, sebagian besar penerjemah memenuhi persyaratan ini secara default.)Ini sebenarnya ternyata sangat mudah! Saya tidak akan terkejut jika golf (saya punya ide di mana mungkin ada byte yang terbuang, tetapi saya tidak yakin apakah itu akan berjalan dengan baik). Tetap saja, membuatnya bekerja sama sekali bukan tantangan sama sekali.
Kode ini memperlakukan semuanya dengan nilai ASCII di bawah 97 sebagai karakter huruf besar. Jika karakter pertama adalah spasi, ia akan mencoba untuk menghilangkan kemunculan "ruang huruf kecil" (yaitu
chr(32+32)
, yaitu@
) dari string. Ini tidak apa-apa, karena hanya huruf dan spasi yang akan ada.Dengan komentar:
sumber
Perl, 13 byte
Menghitung shebang sebagai satu, input diambil dari stdin.
Contoh Penggunaan
sumber
substr
tetapi tentu saja Anda datang dengan cara yang jauh lebih baik!perl -p script.pl
. Opsi baris perintah biasanya dihitung sebagai masing-masing satu byte, setidaknya di situs ini.CJam, 8 byte
Cobalah online di juru bahasa CJam .
Bagaimana itu bekerja
sumber
~
.)Pyth, 8 byte
Cobalah online
Menggunakan versi Python
str.title
untuk mengubah string huruf pertama dua kali ke dalam formulir"<Upper><Lower>"
. Kemudian menghapus setiap elemen dari input yang ada di string itu. Spasi berfungsi dengan baik karena tidak terpengaruh olehstr.title
.sumber
MATLAB, 28 byte
sumber
JavaScript (ES6),
3836 byteIni tidak tergantung pada
flags
parameter yang spesifik Mozilla.CoffeeScript,
3937 byteUntuk sekali ini lebih pendek dalam JS daripada CoffeeScript!
sumber
new
opsional, jadiRegExp(x[0],'gi')
lebih pendek.PHP, 41 byte
Mengambil satu argumen baris perintah . Tag terbuka pendek perlu diaktifkan untuk PHP <5.4.
sumber
$argv[1]
:<?=str_ireplace(($a=$argv[1])[0],'',$a);
Perl, 27 byte
Ini adalah program yang lengkap, meskipun hanya berdasarkan pada 2 regex yang mungkin dapat disalin ke dalam program Retina untuk menghemat byte pada I / O.
Sunting: Sepertinya ini sudah dikalahkan dengan seseorang menggunakan
-p
opsi. Oh, dan menggunakan$&
bukan$1
.sumber
#!perl -p
masih dua byte lebih pendek dari$_=<>;print
.-p
opsi. Sebenarnya tidak ada pengeditan yang dapat saya lakukan untuk jawaban saya tanpa membuatnya identik dengan jawaban Anda.Minkolang 0,9 ,
2333 byteTidak mungkin ini akan menang tetapi eh, itu menyenangkan!
Coba di sini.
Penjelasan
(Ini mungkin gagal dalam beberapa kasus tepi, seperti jika karakter pertama adalah simbol.)
sumber
TECO ,
1514 byteMengedit teks? Jika ragu, gunakan Editor Teks dan Korektor!
Setelah banyak trial-and-error (kebanyakan kesalahan), saya pikir ini adalah program TECO generik terpendek yang akan melakukan pekerjaan.
Atau, dalam bentuk yang bisa dibaca manusia
$
mewakili kunci keluar, dan^E
mewakili urutanCTRL
+E
. Bergantung pada rasa TECO yang Anda gunakan, mungkin saja ia mengenali pengganti ASCII ini, atau mungkin juga tidak.Menurut manual, beberapa dialek TECO menerima versi 13-byte ini (menggunakan perintah find-and-delete alih-alih memisahkan perintah "find" dan "delete"):
sumber
Pip, 8 byte
Mengambil string sebagai argumen baris perintah (perlu dikutip jika berisi spasi). Penjelasan:
Solusi ini memiliki bonus tambahan bekerja pada string yang berisi setiap karakter ASCII yang dapat dicetak. (
X
Operator backslash-lolos dari segala sesuatu yang bukan alfanumerik.)sumber
Python, 66 char
sumber
Julia, 34 byte
Ini menciptakan fungsi tanpa nama yang menerima string dan mengembalikan string. Itu membangun ekspresi reguler tidak sensitif-huruf dari karakter pertama dalam input dan menggantikan semua kemunculan itu dengan string kosong.
sumber
Mathematica, 47 byte
sumber
R, 43 byte
Ini adalah program lengkap yang membaca baris dari STDIN dan menulis hasil yang dimodifikasi ke STDOUT.
Tidak Disatukan:
sumber
Ruby, 25 byte
Fungsi anonim:
Program penuh, 29 byte:
sumber
Python, 61 byte (terlalu banyak)
Saya membayangkan ada cara yang lebih baik untuk melakukan hal ini, tetapi saya tidak dapat menemukannya. Ada gagasan tentang menghapus
"".join(...)
?sumber
x[0]+x[0].swapcase()
.(x[0]*2).title()
,.lambda x:x.replace(x[0].upper(),'').replace(x[0].lower(),'')
- 60 byteOuroboros , 61 byte
Hei, ini lebih pendek dari C ++! Ha.
Dalam Ouroboros, setiap baris program mewakili seekor ular dengan ekornya di mulutnya. Kontrol aliran dicapai dengan memakan atau memuntahkan bagian ekor, dengan tumpukan bersama untuk menyinkronkan antara ular.
Ular 1
i.
membaca karakter dari input dan menduplikatnya..91<\64>*32*
menekan32
jika karakternya adalah huruf besar,0
jika tidak.+
ing itu ke karakter mengkonversi huruf besar ke huruf kecil sambil meninggalkan huruf kecil dan spasi tidak berubah. Semua ini telah terjadi pada tumpukan ular 1, jadi kami sekarang mendorong nilainya ke tumpukan bersama (m
) agar ular 2 diproses. Akhirnya,1(
makan karakter terakhir dari ekor 1 ular. Karena di situlah penunjuk instruksi berada, ular itu mati.Ular 2
)
tidak berpengaruh pertama kali.L!34*
mendorong34
jika tumpukan bersama kosong,0
jika tidak. Kami kemudian.
dup dan(
makan banyak karakter.(
kita baru dieksekusi. Oleh karena itu, kontrol loop kembali ke awal baris, di mana)
memuntahkan karakter yang baru saja kita makan (setelah sebelumnya mendorong salinan tambahan dari34
) dan mengulangi uji panjang stack.0
, dan eksekusi berlanjut:Si
beralih ke tumpukan bersama dan memasukkan karakter lain..1+!24*
mendorong24
jika karakter itu -1 / EOF,0
jika tidak. Satu dari,(
menelan 24 karakter - termasuk IP - dan ular mati. Jika tidak, eksekusi berlanjut.Y
menarik salinan bagian atas tumpukan bersama (karakter yang baru saja kita baca) ke tumpukan ular 2 sendiri untuk digunakan di masa depan. Kemudian.@@.@=@.@32-=\@+2*
hitung apakah karakter baru sama dengan karakter pertama atau karakter pertama minus 32, dorong2
jika ya dan0
kalau tidak. Kami.
menduplikasi dan(
memakan banyak karakter:(
memuntahkan 2 karakter yang baru saja kita makan dan eksekusi dilanjutkan dengan karakter berikutnya.y
menggeser karakter kembali dari tumpukan 2 ular,o
mengucapkannya, dan kemudian mengulang.Lihat itu dalam aksi
Tampilkan cuplikan kode
sumber
C, 60 byte
n,c,d;main(){for(;read(0,&c-n,1);n=2)d-c&31&&n&&putchar(d);}
Sunting: Memperbaiki bug yang menyebabkan byte nol untuk dicetak di awal
sumber
Python 2, 43
Ini agak didasarkan pada jawaban Pyth saya, tetapi juga terkait dengan beberapa komentar dari ThomasKwa dan xnor dari sini . Sebagian besar memposting karena saya ingin jawaban ini ada.
sumber
Vim, 30 penekanan tombol
Maaf untuk menggali, tetapi saya tidak melihat jawaban Vim D:
Penjelasan:
If<Right>xh@x.<Esc>
Tulis makro (rekursif) di sekitar karakter pertama
Bergerak ke kiri (
h
) diperlukan untuk tetap di sebelah kiri karakter yang belum dibaca berikutnya.Menambahkan karakter apa pun (
.
) di akhir diperlukan jika karakter kedua harus dihapus"xy0
Salin makro di registerx
7|
Pindah ke char 7@x
Jalankan makro darix
2|~
Ganti case dari char pertama (sebenarnya di posisi ke-2)0"xd7|
Potong makro dalam registerx
@x
Jalankan makro darix
0x
Lepaskan dudukan tempat.
sumber
:D
Saya selalu mendukung vim!Haskell, 52 byte
sumber
r(h:s)=[c|c<-s,t c/=t h]
.TI-BASIC, 164 byte
Untuk kalkulator grafik TI-83 + / 84 + seri.
TI-BASIC jelas merupakan alat yang salah untuk pekerjaan itu.
Saya tidak 100% yakin, tetapi saya menghabiskan lebih dari enam jam untuk hal ini, dan sepertinya ini adalah solusi sesingkat mungkin.
Untuk mengujinya dengan input non-huruf besar (atau mengetiknya ke dalam kalkulator Anda), buat program lain dengan konten
AsmPrgmFDCB24DEC9
, dan jalankan dengan menggunakanAsm([whatever you named it]
untuk mengaktifkan mode pengetikan huruf kecil.sumber
Lua,
9378 Bytessumber
Common Lisp, 77
Mengutuk nama-nama fungsi panjang ini (dan tanda kurung (tapi aku tetap menyukainya) ()
sumber
C,
6561 byteKompilasi dengan peringatan. Membaca string dari
argv[1]
. Contoh onlinesumber
main(int c,char**v)
menjadimain(c,v)char**v;
, dan(**v-c)%32
ke**v-c&31
.C ++,
1009998 byteHanya satu byte lagi untuk mendapatkan di bawah 100.
getchar()
kembali-1
ketika membaca akhir sungai, sehingga itu sebabnya~
dalamfor
siklus. (~-1 == 0
)Tidak disatukan
sumber
&&putchar(c)
bukan?putchar(c):0
?f-c&31
seperti pada jawaban C?AppleScript,
209201 byteSatu-satunya hiburan saya adalah saya mengalahkan Brainfuck.
Cara kerjanya adalah saya mengambil input
a
, mendapatkan panjanga
dan menandainyan
, dan mengatur variabel outputo
. Untuk setiap karakter yang saya temukan yang tidak mengandung karakter pertama dari (a's character 1
), saya menggabungkannya menjadio
. Baris terakhir dicetako
.Catatan: Ini secara otomatis mendukung semua Unicode. c:
sumber
My only consolation is that I beat Brainfuck.
sepertinya saya lebih baik bermain golf;)Retina , 16 byte
Simpan kode dengan linefeed tambahan dan jalankan dengan
-s
bendera.Cara kerjanya: trailing linefeed menjadikan ini tahap penggantian, sehingga setiap kecocokan dari regex yang diberikan diganti dengan string kosong. The
i
bergantian pada kasus-sensitif modus yang juga membuat backreferences case-sensitive. Akhirnya, regex cukup cocok dan menangkap satu karakter dan kemudian memeriksa apakah karakter pertama dalam string adalah sama (hingga huruf besar) menggunakan backreference.sumber