Inspirasi : pada tahun 1939, seorang pria bernama Ernest Vincent Wright menulis sebuah novel berjudul Gadsby tanpa menggunakan huruf 'e'.
Tugas Anda adalah menulis satu set (hingga 5) program dalam bahasa apa pun (yang memiliki sintaks berbasis teks *) untuk menghasilkan semua 26 huruf alfabet secara berurutan. Namun untuk masing-masing vokal aeiou, setidaknya salah satu program tidak boleh memasukkan kemunculan vokal.
Jadi pasti ada
- sebuah program yang tidak menggunakan ' a ' atau ' A ' di mana saja dalam sintaks program.
- sebuah program yang tidak menggunakan ' e ' atau ' E ' di mana saja dalam sintaks program.
- sebuah program yang tidak menggunakan ' i ' atau ' I ' di mana saja dalam sintaks program.
- sebuah program yang tidak menggunakan ' o ' atau ' O ' di mana saja dalam sintaks program.
- program yang tidak menggunakan ' u ' atau ' U ' di mana pun dalam sintaks program.
Semuanya harus di-output abcdefghijklmnopqrstuvwxyz
.
Pemenang akan menjadi solusi di mana panjang semua program adalah yang terpendek.
* karena kendala tidak akan banyak tantangan di Piet atau Whitespace
Peringkat saat ini (06 Mar 2014):
- A PL : 11
- B ash : 31
- B efunge : 26
- B urlesque : 12
- B rainfuck : 38
- C : 84
- C # : 278/149
- C jam : 6
- C lojure : 81
- D c : 18
- E rlang eskrip : 75
- F # : 96
- Aktor F : 264
- Penerbitan F : 21
- F orth : 46
- G olfscript : 8
- H askell (juru bahasa) : 12
- H TML : 50
- J : 17
- J ava : 137
- J avascript : 92
K : 9
K otlin : 112
- L ua : 57
- M arbelous : 96
- M ATLAB : 11
- P erl 5 (garis cmd) : 23
- P erl 5.10+ : 23
- P erl : 101
- P HP : 31
- P ostscript : 45
- P owershell : 62
- P ython shell : 48
- P ython : 83
- R : 36
- R ebmu : 15
- R uby : 20
- R uby 1.8 : 18
- S cala : 55
- S usia CLI : 42
- T cl : 49
- T -SQL : 120
- V BA : 70
code-golf
string
restricted-source
alphabet
Shamp00
sumber
sumber
Jawaban:
Golfscript - 8 karakter
sumber
91,65>+
sebagai gantinya.Brainfuck, 38 karakter
Tentu saja, tidak ada vokal (atau huruf lain) dalam sintaks brainfuck .
sumber
++[[<+++>->++++<]>]<<<<++[->+.<]
PHP, 31 Bytes
Tidak a, e, i, o, u:
String biner setelah tilde memiliki representasi hex berikut:
Karena ada papan skor bahasa, saya bisa mengirimkan yang ini juga:
Ruby (v1.8) 18 byte
sumber
php -r 'echo("<?=~\x9e\x9d\x9c\x9b\x9a\x99\x98\x97\x96\x95\x94\x93\x92\x91\x90\x8f\x8e\x8d\x8c\x8b\x8a\x89\x88\x87\x86\x85;");' > script.php
. Perintah untuk menjalankannya:php -d error_reporting=0 script.php; echo
.Ruby (
2422)Sunting: tanda kurung dapat dihilangkan, 2 karakter lebih sedikit:
24 karakter di Ruby:
Bagaimana itu bekerja
$>
adalah alias untuk$stdout
atauSTDOUT
. Anda dapat menulis ke sana menggunakan<<
operator. Istilah ini'%c'*26
mengulangi string'%c'
26 kali. The%
Operator didefinisikan pada String sebagai alias untuksprintf
, sehinggastr % val
setara dengan menulissprintf(str,val)
. Karakter format%c
digunakan untuk mengubah nilai char menjadi char. Nilai-nilai ini berasal dari[*97..122]
mana menciptakan array yang berisi nilai-nilai dari 97 hingga 122.sumber
<<
tetapi sudah lupa$>
.$>
sebelumnya, tapi saya kira harus ada alias variabel dolar untuk$stdout
itu tidak ada yang ingat :)$><<[*"`".."z"][1,26]
(catatan: ini hanya berfungsi di Ruby 1.8)p [*"
".." z "] [1,26]` bahkan lebih pendek.Array#to_s
sama denganArray#inspect
, sedangkan di 1.8 ituArray#join
- jadi di 1.9 outputnya["a", "b", "c", "d", "e", ...]
bukanabcdef...
. Untuk alasan yang sama,p
tidak dapat digunakan (ia memanggilinspect
argumennya, bukanto_s
).Pyth , 1 Karakter
Pyth menentukan variabel-variabel tertentu. G ditentukan sebelumnya sebagai alfabet huruf kecil. Pyth juga secara implisit mencetak setiap baris dengan nilai pengembalian yang masuk akal.
sumber
JavaScript (100)
Tidak 'aeou':
No I':
sumber
\x##
kode tetapi tidak yakin apakah mereka valid dalam JavaScript.alert
,confirm
,prompt
,console.log
, dandocument.write
. Cukup mendeklarasikan string literal tidak menghasilkannya sebagai output saat dijalankan. Kalau tidak, Anda akan benar, dan saya akan menggunakannya.K, 9
K, 10
K, 14
sumber
(@$`)$97+!26
$
menggunakan simbol alih-alih string untuk mengontrol tipe yang dikonversi menjadi: `c $ 97 +! 26J,
26231716 karakterSetelah sekitar satu jam mencari-cari di laci pakaian dalam J akhirnya aku menemukan cara untuk menghilangkan
a.
danu:
kata kerja.Sebelumnya:
dengan terima kasih kepada randomra untuk
#\
triknya.sumber
#\
bukan+/\
.R, 17 + 19 = 36 karakter
no ae (17):
no iou (19):
sumber
Bash (38)
Tidak ada vokal sama sekali.
sumber
[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
/bin/sh
bash. Kemudian kode dapat diakhiri dengan/*/sh
(36 byte). Tetapi saya belum menemukan sistem di mana ini bekerja. Di Debian, / bin / sh bukan bash. Di Mac lama saya, / bin / sh adalah bash 2.05b0. (1), tetapi versi ini terlalu tua dan tidak berkembang{a..z}
.C,
90 8884 karakterKompilasi menggunakan
gcc -nostartfiles
sumber
_start
dan_exit
cara yang bagus untuk berkelilingmain
. Tetapi jika jalur kompilasi non-standar OK, mengapa tidak-DX=main
?-DX=main
terasa lebih buruk daripada-nostartfiles
(bagi saya). Ini adalah cara untuk memindahkan bagian dari kode sumber ke baris kompilasi dan itu sama dengan menulis#define X main
dalam kode sumber yang jelas-jelas tidak valid. Padahal-nostartfiles
bukan cara untuk mengubah namamain
, tetapi menghilangkan batasan bahwa harus adamain
fungsi (dipanggil_start
). Di sisi lain, menggunakan-nostartfiles
memang terasa seperti kecurangan, terutama karena mengandung 4 dari 5 huruf "buruk" :)-nostartfiles
ke-DX=main
kecil, lalu mengapa tidak menyimpan beberapa karakter dengan-DX=main()
dan sebagainya. Tetapi saya tidak dapat menemukan solusi yang tidak melibatkan sesuatu yang mencurigakan.-Dmn=main
. Fungsi AC harus memilikimain
fungsi kecuali jika opsi non-standar suka-nostartfiles
digunakan.Golfscript, 10 karakter
sumber
Ruby, 20 karakter
97.chr
adalah cara rumit untuk mengatakan 'a'..
menentukan Range?z
adalah cara yang lebih singkat untuk mengatakan "z"[*range]
menyebabkan rentang untuk percikan al itu nilai-nilai dalam array*''
sama denganjoin('')
; itu menempelkan semua nilai array bersama-sama.$><<
Perlicism: cetak ke stdout.sumber
?z
bukan singkatan untuk'z'
, tetapi untuk122
. Ini, bagaimanapun, tidak bekerja selama 18 byte:$><<[*97.chr..'z']
97.chr
dengan?\x61
untuk -1 byte.dc:
1817 karakterDan di sana meninggal karakter yang berani.
sumber
x
untuk mendaftar yang membuat solusi tambang lebih membingungkan.97[dP1+dBD>m]dsmx
, 17 karakter. Tampaknya Anda selalu dapat memasukkan karakter heksadesimal di DC, tetapi karena basis input adalah sepuluh nilainyaB*10+D=11*10+13=123='{'
, dan bukan 0xBD.Powershell,
7562 karakterSunting: Digunakan -f (String.Format) dan pengindeksan array untuk secara signifikan mengurangi panjang kode.
Bagaimana itu bekerja
gm
adalah alias untukget-members
, jadi1|gm
mengembalikan anggota dari nilai1
, yang merupakanSystem.Int32
tipe:"$(1|gm)"
mengembalikan representasi string dari daftar di atas, yang kebetulan mengandung semua vokal yang kita butuhkan untuk menyelesaikan alfabet: " int C omp ar eTo (System.Object val ue) ..."sumber
($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"
yang juga 75 karakter :)''+$(gv)
dengan yang"$(gv)"
Anda dapatkan($x="$(gv)")[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"
yaitu 74 karakter. Bagus!BASH: 40 karakter
aeiou
digunakansumber
Haskell, 12
Atau ini curang? :)
sumber
Parse error: naked expression at top level
MATLAB, 12 + 20 = 32 karakter
Tidak eiou (12):
No aeou (20)
sumber
Di Perl,
itu juga mungkin tanpa vokal
tetapi jauh lebih sulit daripada di Ruby dll. Ini menggunakan total 101 karakter tetapi tidak memerlukan pemanggilan cmd line (perl -e).
=> Hasil: abcdefghijklmnopqrstuvwxyz
Berbeda dengan Solusi PHP yang “mirip” , ini adalah program nyata . Program membaca sandi berbunyi:
Setelah pengkodean ke nilai oktal, penerjemah perl lain dipanggil saat dijalankan oleh `` (backticks). Backticks akan mengkonsumsi output, oleh karena itu dicetak ke STDERR.
Pengkodean dilakukan oleh sprintf:
dan enkode yang telah di -eval adalah program yang diposting (dalam backticks):
Salam
rbo
sumber
Perl 5, 22 karakter
(1) hanya berisi
a
dane
, 10 karakter (membutuhkan 5.10+, jalankan dari baris perintah):(2) hanya berisi 'i', 12 karakter:
Jika tidak diizinkan untuk menjalankan dari baris perintah, maka Anda harus menggunakan
use 5.01;say a..z
yang pertama, dengan biaya 7 karakter dan satu lagi vokal, tetapi masih tidak memiliki 'i', sehingga menghasilkan entri yang valid dengan total 29 karakter.sumber
use
, meskipun Anda bisa menggantinya dengan opsi baris perintah-M5.01
dan mengurangi dua karakter lagi.-p
opsi di mana 2 karakter ditambahkan ke hitungan. Melihat pertanyaan meta ini , Anda harus dapat menggunakan-M5.010
secara gratis jika opsi itu membantu mempersingkat kode Anda.print
pernyataan Anda dengandie
mencukur 2 karakterchr 97..z
dapat diganti denganv97..z
untuk 3 byte.APL (Dyalog) (
1113)Anda mungkin membutuhkan font APL. Ini seharusnya Unicode tetapi tidak ada pratinjau ...
Hanya
U
(dan mungkin⍳
jika menghitung vokal bahasa Yunani):(Itu:
[quad]UCS 96+[iota]26
)Hanya
A
:sumber
U
adalah vokal ...Python 2, 83
Tidak a , i , o atau u ; 47 :
Tidak e ; 36 :
sumber
Python 2, 175 karakter
Catatan: mencetak ke keluaran tidak seperti jawaban python sebelumnya .
Menggunakan 'e', tetapi tidak a, i, o, u -
63615965(memperbaiki kesalahani
pindah ke huruf kecil) 115 karakter (singkirkan ruang).(Awalnya, digunakan cetak dengan koma yang memasukkan spasi; juga dicetak huruf besar. Sekarang melihat persyaratan ketat untuk 'abcdefghijklmnopqrstuvwxyz' sebagai output; sehingga menambahkan pernyataan impor).
Tidak menggunakan 'e' (menggunakan a, i, o, u; secara sepele bisa menghilangkan, u untuk ekstensi kecil) -
6160 karaktersumber
i
, jadi seharusnya:exec('f%cr x %cn r%cnge(65,91):pr%cnt chr(x),'%(111,105,97,105))
dan kami kembali ke 64 karakter.exec('fr%cm sys
sayamp%crt*\nf%cr
...exec('...')
JavaScript (154)
(1) Hanya berisi
i
(99 karakter):(2) Hanya berisi
aeou
(55 karakter):Demo: http://jsfiddle.net/SvN5n/
sumber
$("h\x65\x61d")[0]["\x6fwn\x65rD\x6fc\x75m\x65nt"]["l\x6fc\x61t\x69\x6fn"]="j\x61v\x61scr\x69pt:\x65v\x61l(`f\x6fr(s='',l=65;l<90;l++){s=s+Str\x69ng.fr\x6fmCh\x61rC\x6fd\x65(l);};c\x6fns\x6fl\x65.l\x6fg(s)`)"
208kar, tidakaeoui
digunakan dalam kode. Bekerja pada browser chrome.Python
159117Seperti disebutkan dalam posting python lain, bagian tersulit adalah berurusan dengan fakta bahwa satu-satunya cara untuk output adalah dengan menggunakan
print
atausys.stdout.write
, keduanya mengandung i. Harus melakukannya dengan 2 program (yang berdiri bebas dan tidak menggunakan shell interaktif python untuk membuat output):Yang ini hanya menggunakan saya untuk 55 karakter:
Yang ini menghindari penggunaan i untuk 104 karakter:
EDIT: Terobosan besar-besaran !!! Saya berpikir bahwa penggunaan eval (atau bahkan eksekutif) sedikit curang dan tidak benar-benar dalam semangat kompetisi. Pokoknya, dengan menelusuri bawaan, saya menemukan cara untuk mendapatkan fungsi cetak tanpa menggunakan i. Jadi di sini adalah program avoid-i (dan o) untuk 68 karakter:
Tetapi karena itu juga menghindari o, ini dapat dipasangkan dengan yang hanya menghindari a, e, u untuk 49 karakter:
sumber
vars(vars().values()[0]).values()[47]
Ruby
1961644447sumber
p
mengeluarkan tanda kutip di sekitar alfabet?p x
sama dengan meneleponputs str.inspect
, yang menghasilkan tanda kutip di sekitarnya.$><<
, jadi +1 untuk itu dan selamat; versi Anda jauh lebih baikRuby, 22
Tidak ada surat apa pun :)
sumber
VBA: 76 brute force, 116 tanpa 'curang' (98 jika baris baru dapat diterima dalam output)
Fungsi Standar
Berkat kata kerja VBA, saya tidak percaya ini bisa dilakukan tanpa 'E' atau 'U' dalam modul kode standar ...
Fungsi Segera
Berjalan dengan asumsi mellamokb, ini tanpa deklarasi fungsi (meninggalkan
SUB
danFUNCTION
) ( 116 karakter , 98 jika keluaran baru diterima dalam output):Di bawah ini tidak menggunakan 'e' atau 'a' ( 43 karakter , diformat untuk dijalankan di jendela langsung):
Di bawah ini tidak menggunakan 'i' atau 'a' atau 'u' ( 33 karakter , diformat untuk dijalankan di jendela langsung):
Di bawah ini tidak menggunakan 'a' atau 'o' atau 'u' ( 40 karakter , diformat untuk dijalankan di jendela langsung):
Jika karakter baris baru diizinkan dalam output, maka contoh di atas bisa lebih pendek:
( 37 karakter )
( 27 karakter )
( 34 karakter )
Kasar
Berjalan dengan jawaban Ruby w0lf
( 76 karakter , diformat untuk dijalankan di jendela langsung):
sumber
Sub..End Sub
, karena sebagian besar program lain tidak memasukkan definisi fungsi.Sub
:)print
untuk?
sejak yang bekerja di jendela segera.Rebmu : 15 karakter
Membaca Rebmu selalu membutuhkan sedikit unmushing untuk memulai dengan:
Maka membantu untuk memperluas singkatan:
Akan lebih jelas menggunakan karakter literal untuk pendahulu huruf kecil a:
Tapi itu tidak "bubur", jadi mengubah kata literal ke karakter lewat untuk tujuan yang sama. Apa yang saya sukai tentang itu, seperti pada kebanyakan Rebmu, adalah ia memiliki semangat program yang masuk akal meskipun ada kompresi. (Jawaban Golfscript lebih pendek tetapi tidak memetakan dengan cara yang biasanya dipikirkan oleh programmer saat coding.)
sumber
<> <(Ikan) - 22 karakter
Karena <> <menggunakan 'o' untuk mencetak karakter, tantangan ini tampaknya tidak mungkin dilakukan. Untungnya, ikan dapat mengubah kode sendiri di runtime. Ini memungkinkan saya untuk menambahkan instruksi cetak ke kode.
Kode ini tidak menggunakan vokal:
Anda dapat menjalankan kode di sini
sumber