Tantangannya adalah menghapus vokal (a, e, i, o, u) dari string dari STDIN (ya, saya tahu, sederhana). Anda dapat berharap bahwa program Anda tidak akan dijalankan dengan argumen apa pun di argv
.
Contoh:
This program will remove VOWELS.
So we can now speak without them.
Diubah menjadi:
Ths prgrm wll rmv VWLS.
S w cn nw spk wtht thm.
Ada tangkapan. Entri yang menang diputuskan berdasarkan jumlah byte yang berbeda. Misalnya a ab
memiliki tiga byte berbeda ( a
, b
dan spasi). Jika dua atau lebih entri akan memiliki jumlah byte yang berbeda yang sama, maka mundur dilakukan pada jumlah byte untuk entri tersebut.
code-challenge
string
Konrad Borowski
sumber
sumber
Renée’s naïveté
? Dilucuti vokal, yang tentu saja harusRn’s nvt
sebagai output. Sepertinya pendekatan ini semua sangat naif jika Anda bertanya kepada saya. :)Jawaban:
Binary Whitespace (2 karakter berbeda, 324 karakter total)
TTSSSTTSSSSTTTSTTTSSSSSSTTSSSTSSSSSSTSTTSSSTSSSSTSSTSTTSSSTSSSTSSSTSTTSSSTSSSTSTSTSTSTTSSSTSSTSSTSSTSTTSSSTSTSSSSSTSTTSSSTSTSSSTSSTSTTSSSTSTSSTSSSTSTTSSSTSTSSTSTSTSTSTTSSSTSTSTSSTSSTSTTTTSSSTSTTSTTSTTTSSTSTTSSSSTTTSTSTSTSSSTSTTTSSTTTTSTTSTSTTTTSSTTTTTSSSTTTTSTTTTTTSSTSTTSSSSTTTSTSTSSTTSTTTSSSSTTTSTTSSTTSTTSTTTTSSSSTTTTTTTT
di mana S, T, L menunjukkan Spasi, Tab, Linefeed, masing-masing. (Tanpa malu-malu diperoleh dengan mengubah jawaban Whitespace oleh "breadbox" menjadi Binary Whitespace - posting ini mungkin harus menjadi komentar untuk jawabannya, tetapi terlalu panjang.)
Binary Whitespace adalah Whitespace dikonversi ke bahasa kode-awalan oleh mana-mana menggunakan TS bukan T dan menggunakan TT bukan L; misalnya instruksi BWS untuk mendorong -5 ke stack adalah SSTSTSSTSTT bukan SSTTSTL, dll. Tautan: Penerjemah dua arah untuk bahasa simbol 3 yang sewenang-wenang dan versi kode awalan binernya .
NB: Akan lebih mudah untuk merancang juru bahasa bitwise sejati untuk program Binary Whitespace yang dianggap sebagai bit- followingences, daripada char-sequences (misalnya menggunakan 0,1 bit-value bukannya S, T karakter, masing-masing). Di atas akan menjadi program 324- bit yang membutuhkan 41 byte penyimpanan.
sumber
Brainfuck, 8 berbeda (2121 total)
Karakter distict:
<>+-[],.
. Bekerja dengan penerjemah yang digunakan-1
untukEOF
.sumber
Renée’s naïveté
menjadiRń’s n̈vt́
? Sepertinya itu tidak benar bagi saya, tetapi jika Anda mengatakannya. Karena Anda tidak dapat mengasumsikan normalisasi, sangat masuk akal bahwaRenée’s naïveté
itu benar"Rene\N{COMBINING ACUTE ACCENT}e\N{RIGHT SINGLE QUOTATION MARK}s nai\N{COMBINING DIAERESIS}vete\N{COMBINING ACUTE ACCENT}"
- atau jika Anda lebih suka angka ajaib"Rene\x{301}e\x{2019}s nai\x{308}vete\x{301}"
,. Jika Anda menghapus vokal tanpa diakritik yang menyertainya, Anda mendapatkan kekonyolan yang ekstrim. Selamat datang di Milenium Baru yang Berani! :)1.166921663690E+1824
byte untuk menyimpannya (Saya sudah mengunggah angka pastebin ke pastebin, itu tidak cocok dengan komentar ini). Saya bertanya-tanya berapa banyak waktu yang diperlukan untuk mengirimkannya ke situs ini.Spasi, 3 poin (218 karakter)
Kamu tahu itu akan terjadi.
(_ = spasi, ⇥ = tab, ↲ = baris baru)
Berikut skrip yang disandikan di base64:
Dan inilah program yang ditulis dalam bentuk assembler-like:
sumber
LSSSLSSSLTLTSSSSLSSSTSSSSSTLSSSTSSSTSTLSSSTSSTSSTLSSSTSSTTTTLSSSTSTSTSTLSSSTTSSSSTLSSSTTSSTSTLSSSTTSTSSTLSSSTTSTTTTLSSSTTTSTSTLLSSSTLSLSLTSTLSSSLTTTTSSTLTSLLSLSTLLSSLLTSSLLSLLLSSTLSSSLTTTSLSLTSSSLTLSSLSLSLLSSSSLLLL
. Tampaknya ada dua masalah (antara lain) adalah Anda mencoba mendorong 0 ke stack menggunakan,SSSL
bukanSSSSL
, dan juga mencoba mendefinisikan label "kosong" dengan menggunakanLSSL
forskip
.SED (10 byte berbeda, 13 total)
Penggunaan sampel:
output:
sumber
I
huruf besar? Ini berfungsi dengan baik ketikaI
karakter huruf kecil.I
karakter tersebut digunakan kembali.ö
danï
disalahgunakan dalam contoh Anda dan dua lainnya adalah konsonan. Tetap saja, saya pikir Anda ada benarnya. Tetapi dengan cara ini kita akhirnya dapat mendukung ò̟̣̱͉̙t̝͔͖͇͙̦̝h̵̩e͎r͓̥ ̱̼̞̰̠͔k̞̝̮̕i̴̘̟̬̠n̻͜d̦̰̼̰͔s͈̺̝̭ ̫̺͔̠̭̖o̼f̲͘ ͓̮v̳̙͔̝o͔̭̫͕͢ẃ̜͉̪̩̗e̻͔̺̬̣ĺs͖̭̮ juga; bahkan mungkin ,, slǝʍoʌ uʍop ǝpısdn ,, :-)ö
danï
pernah ditemukan dalam bahasa Inggris, meskipun mereka hampir menghilang sekarang.C,
222019 karakter berbeda.Surat yang dibutuhkan untuk
main
,putchar
,getchar
= 12.Tanda Baca -
(){};
= 5.Operator -
&-
= 2.main
meminta perilaku yang tidak terdefinisi (terlalu banyak--
dalam satu baris).Saya tidak peduli dengan nilai ekspresi, dan itu mengurangi
ii
jumlah yang tepat kali.Dapat diperbaiki dengan mudah dengan memisahkan decrements dengan
;
. Tapi itu jauh lebih baik.Versi lama, 20 karakter:
Sebenarnya 21, karena saya tidak melihat bahwa beberapa spasi penting dan harus dihitung, tetapi mereka dapat diganti dengan tanda kurung dengan mudah.
Mungkin dapat ditingkatkan lebih lanjut, dengan menyusun
gcc -nostartfiles
, dan mengganti namamain
menjadi_start
.min
dihapus (setelah beberapa perubahan nama variabel),_s
ditambahkan. Tapi kemudian saya harus menggunakanexit()
, yang menambahkan 3 karakter.Alih-alih
_start
, nama apa pun bisa digunakan, dan itu berfungsi di Linux. Ini memungkinkan turun ke 18 karakter, tetapi sangat tidak standar.sumber
Perl: 8 atau 10 karakter berbeda
s///
solusi: 10 berbeda, 13 totalThe (konon; lihat di bawah) teknik sed selalu bekerja di perl, juga, dan menghasilkan nomor nama karakter yang berbeda (10):
Sebagai contoh:
Itu 10 karakter berbeda, karena ini membuktikan:
Masalah dengan solusi sed adalah bahwa yang
/i
merupakan bukan bagian dari POSIX sed, dan dengan demikian tidak portabel:Itu berjalan pada sistem OpenBSD. Sebaliknya, karena
/i
memang selalu menjadi bagian dari perl standar, Anda dapat mengandalkan selalu ada di sana. Tidak seperti sed.Jika Anda ingin memasukkan "y" dalam daftar vokal, tentu saja lebih besar jika Anda menggunakan teknik yang sama:
Dan sekarang 14 total karakter.
tr[][]
solusi: 8 total 10 berbedaAnda juga dapat menggunakan
tr///
untuk menghapus apa pun yang cocok. Perl bahkan dapat menggunakany///
alias sed untuktr
:yang sekarang 8 karakter berbeda, tetapi tidak berfungsi pada huruf besar. Anda akhirnya harus menambahkan 5 karakter lagi untuk mengatasi casemaps:
dan tentu saja sekarang 15 total.
Namun, menambahkan "y" ke dalam campuran sebagai vokal tidak menambah jumlah karakter berbeda seperti yang terjadi pada
s///
versi:Jadi itu masih hanya 8 yang asli dari total 11:
EDIT : Akuntansi untuk Diakritik
Dan bagaimana dengan input
Renée’s naïveté
? Output yang benar tentunyaRn’s nvt
. Berikut cara melakukannya, menggunakan/r
bendera v5.14 untuks///
:Itu 27 karakter yang berbeda:
Anda dapat memotongnya menjadi 26 jika Anda dapat menjamin bahwa Anda menjalankan setidaknya v5.10 dengan menukar
print
untuksay
:Dan Anda bisa menurunkannya menjadi 22 jika Anda tidak keberatan memindahkan diakritik alih-alih menghapusnya:
Yang ... menarik untuk dilihat, untuk sedikitnya. :) Inilah hitungan-nya yang berbeda:
Semoga berhasil mendapatkan bahasa lain untuk menangani diakritik dengan menggunakan karakter lebih sedikit dari ini!
sumber
"ɢᴏᴏᴅ ᴘnt αβουτ dcrtcs y gt thr, bvt hw bt stff lk THS"
, atau"\N{LATIN LETTER SMALL CAPITAL G}\N{LATIN LETTER SMALL CAPITAL O}\N{LATIN LETTER SMALL CAPITAL O}\N{LATIN LETTER SMALL CAPITAL D} \N{LATIN LETTER SMALL CAPITAL P}nt \N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER BETA}\N{GREEK SMALL LETTER OMICRON}\N{GREEK SMALL LETTER UPSILON}\N{GREEK SMALL LETTER TAU} dcrtcs y gt thr, bvt hw bt stff lk THS"
.ø
.Renée’s naïveté
harus memberiRné’s nïvté
.GolfScript (7 byte berbeda, total 103)
Cukup banyak perbaikan atas w0lf 's jawaban yang saya pikir itu memenuhi syarat sebagai salah satu yang terpisah:
12 byte berbeda, total 13:
sumber
Golfscript (8 byte berbeda, total 837)
Penjelasan:
[97 101 105 111 117 65 69 73 79 85]
(sesuai dengan kode ASCIIa,e,i,o,u,A,E,I,O,U
). Setiap angka diwakili dengan mendorong nilai stack9
, diikuti oleh jumlah yang dibutuhkan)
(operator increment). Misalnya, nomor67
tersebut diperoleh dengan menggunakan9
dan 58)
s''+
, array dikonversi menjadi string"a,e,i,o,u,A,E,I,O,U"
, mewakili semua vokal8 karakter yang unik yang digunakan:
[
,]
,9
,)
,+
,-
,'
dan(space)
sumber
Tidak dapat dibaca (2 berbeda, total 2.666)
Karena semua orang memposting Turing tarpits, saya pikir saya akan menggunakan ini. Itu bukan yang sangat terkenal tetapi memang ada ( http://esolangs.org/wiki/Unreadable ) dan hanya memiliki dua karakter.
sumber
VBA -
2522 byte berbeda (total 120)Saya tahu ini tidak akan menang dengan banyak byte yang berbeda, tetapi ini dia di VBA.
(space)
,(newline)
,"
,,
,(
,)
,=
,a
,b
,c
,d
,e
,E
,I
,l
,n
,O
,p
,R
,S
,u
,1
*
,,,1
memungkinkan untuk mengabaikan kasus. (1
mewakili konstantavbTextCompare
)sumber
E
dalamEnd Sub
. Tapi cukup bagus, mengingat itu Basic.E
, dan saya sudah diperbaiki. Saya pikir saya terlalu khawatir tentang daging Sub. ;-)e
atauE
?Replace(Replace(Replace(Replace(Replace(cells(1,1),"u","",,,1),"O","",,,1),"I","",,,1),"e","",,,1),"a","",,,1)
pada hitungan saya 18 Distinct Bytes?Replace(s1,)"uOI
dan 111 bytes totalPython 3.x, 19 karakter berbeda, total 62
sumber
Renée’s naïveté
, Anda tahu.J, 21 karakter (18 berbeda)
sumber
K, 29. (18 byte berbeda)
byte berbeda: {@ & ~ (: 0) di _, "AEIOU}
sumber
ASM - 6 karakter berbeda 520 karakter sumber (MsDOS .com)
Dirakit menggunakan A86
sumber
MATL, 8 byte (semuanya berbeda)
Cobalah di MATL Online
Hanya golf lurus, tidak benar-benar menemukan trik untuk menggunakan kembali karakter untuk mengurangi bytecount yang unik.
13Y2
adalah literal yang mengandungaeiouAEIOU
.Ambil duplikat
t
dari string input, buat array logis (boolean) yang menunjukkan huruf input mana yang bukan (~
)m
bara dari literal itu, dan indeks ()
) di tempat-tempat itu, untuk mengembalikan array yang hanya terdiri dari karakter non-vokal.sumber
PHP - 30 byte berbeda
sumber
/[aeiou|AEIOU]/
menjadi/[aeiou]/i
? Selain itu, kode Anda juga menyebabkan|
menghilang.bash 26 berbeda, 37 total
diurutkan:
Hasil (mempertahankan umpan baris):
Untuk tr, tidak jelas bagaimana cara menghitung: '-d aeiouAEIOU' sebagai 10 atau 13:
sumber
tr -d aeiouAEIOU
untuk 15.Python (23)
Harus ada yang melakukannya.
sumber
F #
105 12191 karaktersumber
Formula Excel - 19 byte berbeda (total 196)
=
,S
,B
,T
,(
,)
,,
,"
,a
,e
,i
,o
,u
,A
,E
,I
,O
,U
,1
* Ini sebenarnya terlalu banyak fungsi bersarang untuk bekerja di Excel 2003, tetapi konsepnya ada di sana.Memisahkan formula menjadi dua sel mencapai efek yang diinginkan. - Hasilnya di C1.
sumber
Noether, 16 byte individu (17 total)
Cobalah online!
Menggunakan regex
untuk menghapus vokal dari input string.
sumber
K (oK) , 16 byte, 14 berbeda
Larutan:
Cobalah online!
Penjelasan:
Menggunakan exception (
^
) untuk menyaring vokal.sumber