Cetak alfabet tanpa menggunakan setiap vokal

72

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):

Shamp00
sumber
4
@ w0lf: Tidak, katanya "hingga 5 program" dan "panjang semua program", yang saya baca sebagai "hanya ada satu program dan panjangnya diperhitungkan dalam kasus ini".
schnaader
9
@PeterTaylor: Anda tidak berpikir harus menghindari penggunaan vokal di sintaks Anda adalah tantangan unik? Sebagai seorang programmer JS, ini sangat menarik :)
mellamokb
2
Apakah baris baru dapat diterima dalam output (yaitu satu per karakter)? Saya dapat mempersingkat beberapa kode saya jika itu yang terjadi ...
Gaffi
2
Apakah output huruf besar diperbolehkan?
Erik the Outgolfer
2
Saya OP. Huruf besar tidak diizinkan.
shamp00

Jawaban:

48

Golfscript - 8 karakter

123,97>+
gnibbler
sumber
8
sial, benar-benar tidak bisa mengalahkan naskah golf dalam hal keringkasan ...
Patrick Oscity
18
Yang sedang berkata, keterbacaan bau seperti gila.
Andrew Gray
5
Ini tidak seburuk itu;) buat daftar 123 angka, pindahkan yang tidak lebih besar dari 97, paksakan (susunan angka) ke sebuah string.
McKay
3
Gunakan 91,65>+sebagai gantinya.
Erik the Outgolfer
31

Brainfuck, 38 karakter

++++++[->++++<]>[->+>++++<<]>++[->+.<]

Tentu saja, tidak ada vokal (atau huruf lain) dalam sintaks brainfuck .

Ilmari Karonen
sumber
2
Poin yang valid di sana! ;)
WallyWest
3
30 byte:++[[<+++>->++++<]>]<<<<++[->+.<]
primo
23

PHP, 31 Bytes

Tidak a, e, i, o, u:

<?=~žœ›š™˜—–•”“’‘ŽŒ‹Š‰ˆ‡†…;

String biner setelah tilde memiliki representasi hex berikut:

\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

Karena ada papan skor bahasa, saya bisa mengirimkan yang ini juga:

Ruby (v1.8) 18 byte

$><<[*97.chr..'z']
primo
sumber
Saya tidak yakin saya mengerti cara kerjanya. Bisakah saya mendapatkan penjelasan?
Tn. Llama
Ketika diterapkan ke string, operator ~ membalikkan semua bit. Di sini saya telah membalik abc ... xyz. Karena tidak ada simbol karakter (atau spasi putih) dalam string biner, tanda kutip juga tidak diperlukan.
primo
1
Anda mungkin ingin menentukan pengkodean untuk apa yang Anda miliki di sana.
Joey
1
iso-8859-1. Tiga karakter 'tidak patut' dihapus saat diposting, itulah sebabnya saya menyertakan hex.
primo
2
Bagus dan mungkin versi PHP sesingkat mungkin. Sebuah perintah untuk menghasilkan file: 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.
axiac
16

Ruby ( 24 22)

Sunting: tanda kurung dapat dihilangkan, 2 karakter lebih sedikit:

$><<'%c'*26%[*97..122]

24 karakter di Ruby:

$><<('%c'*26)%[*97..122]

Bagaimana itu bekerja

$>adalah alias untuk $stdoutatau STDOUT. Anda dapat menulis ke sana menggunakan <<operator. Istilah ini '%c'*26mengulangi string '%c'26 kali. The %Operator didefinisikan pada String sebagai alias untuk sprintf, sehingga str % valsetara dengan menulis sprintf(str,val). Karakter format %cdigunakan untuk mengubah nilai char menjadi char. Nilai-nilai ini berasal dari [*97..122]mana menciptakan array yang berisi nilai-nilai dari 97 hingga 122.

Patrick Oscity
sumber
Sangat bagus. Saya sedang mencari cara untuk menggunakan <<tetapi sudah lupa $>.
Mark Reed
1
Saya bahkan tidak tahu tentang $>sebelumnya, tapi saya kira harus ada alias variabel dolar untuk $stdoutitu tidak ada yang ingat :)
Patrick Oscity
21 karakter: $><<[*"`".."z"][1,26](catatan: ini hanya berfungsi di Ruby 1.8)
Ventero
@Ventero tidak hanya di Ruby 1.8, di Ruby 1.9.2 juga berfungsi. Tetapi menggunakan p [*"".." z "] [1,26]` bahkan lebih pendek.
Hauleth
@ Hauleth: Tidak, menjalankannya di 1.9 tidak menghasilkan output yang benar, karena di 1.9 Array#to_ssama dengan Array#inspect, sedangkan di 1.8 itu Array#join- jadi di 1.9 outputnya ["a", "b", "c", "d", "e", ...]bukan abcdef.... Untuk alasan yang sama, ptidak dapat digunakan (ia memanggil inspectargumennya, bukan to_s).
Ventero
16

Pyth , 1 Karakter

G

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.

isaacg
sumber
3
Ninja'd saya pada 3 tahun ...
Stan Strum
15

JavaScript (100)

Tidak 'aeou':

this['\x61l\x65rt']('\x61bcd\x65fghijklmn\x6fpqrst\x75vwxyz')

No I':

alert('abcdefgh\x69jklmnopqrstuvwxyz')
zzzzBov
sumber
+1 Peningkatan yang bagus pada jawaban saya :) Saya sudah berpikir untuk menggunakan \x##kode tetapi tidak yakin apakah mereka valid dalam JavaScript.
mellamokb
mengapa lansiran sama sekali? pada terminal js, objek digema secara otomatis. ('\ x61bcd \ x65fghijklmn \ x6fpqrst \ x75vwxyz') @ 42 karakter.
antony.trupe
3
@ antony.trupe, untuk kode golf, IO biasanya dilakukan melalui mekanisme IO bawaan bahasa (atau plugin umum). Untuk JS ini biasanya alert, confirm, prompt, console.log, dan document.write. Cukup mendeklarasikan string literal tidak menghasilkannya sebagai output saat dijalankan. Kalau tidak, Anda akan benar, dan saya akan menggunakannya.
zzzzBov
menghasilkan output (menurut definisi saya menggunakan anyways) di google chrome console, tapi saya mengakui masalahnya; ini adalah pembatasan sewenang-wenang untuk memulai.
antony.trupe
@ antony.trupe, dalam bahasa seperti PHP Anda akan bisa lolos menggunakan literal, karena begitulah ia menjalankan IO.
zzzzBov
15

K, 9

_26#.Q.b6

K, 10

"c"$97+!26

K, 14

.:".Q.","c"$97
tmartin
sumber
2
dan cara konyol untuk melakukannya tanpa surat sama sekali (12 karakter):(@$`)$97+!26
Aaron Davies
1
Cara K5 hampir merupakan solusi kedua Anda, tetapi $menggunakan simbol alih-alih string untuk mengontrol tipe yang dikonversi menjadi: `c $ 97 +! 26
JohnE
15

J, 26 23 17 16 karakter

Setelah sekitar satu jam mencari-cari di laci pakaian dalam J akhirnya aku menemukan cara untuk menghilangkan a.dan u:kata kerja.

2(3!:4)96+#\26$1

Sebelumnya:

a.{~96++/\26$1
u:97+i.26

dengan terima kasih kepada randomra untuk #\triknya.

Gareth
sumber
Solusi bagus! Berhasil mempersingkat dengan 1 char menggunakan #\ bukan +/\ .
randomra
5
Keluar dari laci pakaian dalam saya
Joe
14

R, 17 + 19 = 36 karakter

no ae (17):

intToUtf8(97:122)

no iou (19):

cat(letters,sep="")
Paolo
sumber
12

Bash (38)

Tidak ada vokal sama sekali.

/*/*/*ntf "/*/?ch? {\x61..z}"|/*/b?sh
marinus
sumber
Program ini gagal pada sistem saya, karena / * / b? Sh tidak ada. Saya memiliki / usr / local / bin / bash, bukan / bin / bash.
kernigh
2
Penggunaan shell globbing yang bagus!
Siput mekanik
@kernigh[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
Stan Strum
Akan lebih baik jika /bin/shbash. 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}.
kernigh
11

C, 90 88 84 karakter

Kompilasi menggunakan gcc -nostartfiles

b;_exit(){for(;b<26;)printf("%c",b+++97);}    // 42 chars, works for a, u
b;_start(){putchar(b+++97)>121?:_start();}    // 42 chars, works for e, i, o
schnaader
sumber
_startdan _exitcara yang bagus untuk berkeliling main. Tetapi jika jalur kompilasi non-standar OK, mengapa tidak -DX=main?
ugoren
4
Entah bagaimana, -DX=mainterasa 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 maindalam kode sumber yang jelas-jelas tidak valid. Padahal -nostartfilesbukan cara untuk mengubah nama main, tetapi menghilangkan batasan bahwa harus ada mainfungsi (dipanggil _start). Di sisi lain, menggunakan -nostartfilesmemang terasa seperti kecurangan, terutama karena mengandung 4 dari 5 huruf "buruk" :)
schnaader
Itu lereng yang licin ... Jarak dari -nostartfileske -DX=mainkecil, lalu mengapa tidak menyimpan beberapa karakter dengan -DX=main()dan sebagainya. Tetapi saya tidak dapat menemukan solusi yang tidak melibatkan sesuatu yang mencurigakan.
ugoren
Tidak ada cara Anda dapat mendefinisikan fungsi utama menjadi "mn" misalnya?
Neil
@ Neil, hanya dengan melakukan sesuatu seperti -Dmn=main. Fungsi AC harus memiliki mainfungsi kecuali jika opsi non-standar suka -nostartfilesdigunakan.
Matthew Flaschen
9

Golfscript, 10 karakter

26,{97+}%+
hammar
sumber
18
Kenapa begitu verbose?
Peter Taylor
9

Ruby, 20 karakter

$><<[*97.chr..?z]*''
  • 97.chr adalah cara rumit untuk mengatakan 'a'
  • .. menentukan Range
  • ?z adalah cara yang lebih singkat untuk mengatakan "z"
  • yang [*range]menyebabkan rentang untuk percikan al itu nilai-nilai dalam array
  • *''sama dengan join(''); itu menempelkan semua nilai array bersama-sama.
  • $><< Perlicism: cetak ke stdout.
steenslag
sumber
Kode ini sepertinya tidak berfungsi. ?zbukan singkatan untuk 'z', tetapi untuk 122. Ini, bagaimanapun, tidak bekerja selama 18 byte:$><<[*97.chr..'z']
primo
Itu bekerja di Ruby 1.9.
steenslag
1
Saya mengunduh 1.9.3 ... dan Anda benar. Mengapa mereka mengubah sesuatu seperti itu? Saya bisa melihat mengapa golf anarki masih berjalan 1.8.7. Bagaimanapun, solusi 18 byte bekerja untuk v1.8.7-
primo
2
(4 tahun kemudian ...) Anda dapat mengganti 97.chrdengan ?\x61untuk -1 byte.
Jordan
9

dc: 18 17 karakter

97[dP1+dBD>m]dsmx

Dan di sana meninggal karakter yang berani.

Untuk S
sumber
Saya ragu begitu. Saya membungkus kepala di sekitarnya dan saya tidak melihat cara untuk mempersingkatnya. Saya telah mengakhiri dengan solusi yang sama persis kecuali saya digunakan xuntuk mendaftar yang membuat solusi tambang lebih membingungkan.
Hynek -Pichi- Vychodil
3
97[dP1+dBD>m]dsmx, 17 karakter. Tampaknya Anda selalu dapat memasukkan karakter heksadesimal di DC, tetapi karena basis input adalah sepuluh nilainya B*10+D=11*10+13=123='{', dan bukan 0xBD.
Fors
Oh, glich yang bagus ;-)
Hynek -Pichi- Vychodil
9

Powershell, 75 62 karakter

Sunting: Digunakan -f (String.Format) dan pengindeksan array untuk secara signifikan mengurangi panjang kode.

'{0}bcd{1}fgh{2}jklmn{3}pqrst{4}vwxyz'-f"$(1|gm)"[8,10,0,5,31]

Bagaimana itu bekerja

gmadalah alias untuk get-members, jadi 1|gmmengembalikan anggota dari nilai 1, yang merupakan System.Int32tipe:

PS C:\> 1|gm
   TypeName: System.Int32
Name        MemberType Definition
----        ---------- ----------
CompareTo   Method     int CompareTo(System.Object value), int CompareTo(int value)
Equals      Method     bool Equals(System.Object obj), bool Equals(int obj)
GetHashCode Method     int GetHashCode()
...

"$(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) ..."

Danko Durbić
sumber
2
Ini tidak stabil jika MS menambahkan anggota ke System.Int32, meskipun :-)
Joey
Saya pikir itu harus menjadi ($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"yang juga 75 karakter :)
Danko Durbić
Argh, benar. Saya mengambil barang yang salah dari sejarah saya. Maaf.
Joey
Sebenarnya, jika Anda ganti ''+$(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!
Danko Durbić
2
Saya menggunakan -f (String.Format) dan pengindeksan array untuk secara signifikan mengurangi panjang kode.
Tim Lewis
8

BASH: 40 karakter

  • Tidak aeioudigunakan
  • Tidak ada wildcard yang digunakan.
`tr c-y '\141-w'<<<'rtkpvh %s c'` {b..z}
Pangeran John Wesley
sumber
8

Haskell, 12

['\97'..'z']

Atau ini curang? :)

RobAu
sumber
Saya mengakui tidak tahu banyak tentang Haskell, tetapi ini memberi saya kesalahan ini:Parse error: naked expression at top level
primo
1
Anda menjalankannya dalam bahasa juru bahasa
RobAu
7

MATLAB, 12 + 20 = 32 karakter

Tidak eiou (12):

char(97:122)

No aeou (20)

fprintf('%s',97:122)
Jonas
sumber
7

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).

`\160\145\162\154\40\55\145\40\42\160\162\151\156\164\40\123\124\104\105\122\122\40\141\56\56\172\42`

=> Hasil: abcdefghijklmnopqrstuvwxyz

Berbeda dengan Solusi PHP yang “mirip” , ini adalah program nyata . Program membaca sandi berbunyi:

perl -e "print STDERR a..z"

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:

my $s = q{perl -e "print STDERR a..z"};
my $cmd = eval(
       '"' . join('', map sprintf("\\%o",ord $_), split //, $s) . '"'
       );

dan enkode yang telah di -eval adalah program yang diposting (dalam backticks):

"\160\145\162\154\40\55\145\40\42\160\162"
"\151\156\164\40\123\124\104\105\122\122"
"\40\141\56\56\172\42"

Salam

rbo

sepatu karet
sumber
8
Anda dapat mempersingkat ini menjadi 44 karakter dengan hanya menyandikan vokal :)
marinus
7

Perl 5, 22 karakter

(1) hanya berisi adan e, 10 karakter (membutuhkan 5.10+, jalankan dari baris perintah):

-Esay+a..z

(2) hanya berisi 'i', 12 karakter:

print v97..z

Jika tidak diizinkan untuk menjalankan dari baris perintah, maka Anda harus menggunakan use 5.01;say a..zyang pertama, dengan biaya 7 karakter dan satu lagi vokal, tetapi masih tidak memiliki 'i', sehingga menghasilkan entri yang valid dengan total 29 karakter.

Mark Reed
sumber
Opsi '-E' ok saya pikir, tetapi biasanya 2 karakter '-E' ditambahkan ke panjang total karakter.
Gareth
@gareth - the -E menggantikan -e untuk menjalankan one-liner. Jika Anda menjalankan program dari file, maka Anda terjebak dengan use, meskipun Anda bisa menggantinya dengan opsi baris perintah -M5.01dan mengurangi dua karakter lagi.
Mark Reed
Saya memikirkan aturan dengan -popsi di mana 2 karakter ditambahkan ke hitungan. Melihat pertanyaan meta ini , Anda harus dapat menggunakan -M5.010secara gratis jika opsi itu membantu mempersingkat kode Anda.
Gareth
Anda dapat mengganti printpernyataan Anda dengan diemencukur 2 karakter
ardnew
chr 97..zdapat diganti dengan v97..zuntuk 3 byte.
primo
7

APL (Dyalog) ( 11 13)

Anda mungkin membutuhkan font APL. Ini seharusnya Unicode tetapi tidak ada pratinjau ...

Hanya U(dan mungkin jika menghitung vokal bahasa Yunani):

⎕UCS 96+⍳26

(Itu: [quad]UCS 96+[iota]26)

Hanya A:

⎕A
marinus
sumber
2
Uadalah vokal ...
Tobia
@Tobia: dan butuh lebih dari setahun bagi seseorang untuk melihat itu (termasuk saya). Saya kira iota sebenarnya juga vokal sekarang karena saya sedang memikirkannya. Memperbaikinya.
marinus
Simbol fungsional APL iota (U + 2373) tidak dianggap sebagai huruf dalam Unicode, dan karena itu tidak dapat menjadi vokal. Perhatikan, bahwa ini berbeda dari huruf kecil Yunani iota (U + 03B9).
ngn
7

Python 2, 83

Tidak a , i , o atau u ; 47 :

x=97;s='';exec"s+=chr(x);x+=1;"*26+"pr\x69nt s"

Tidak e ; 36 :

print"abcd\x65fghijklmnopqrstuvwxyz"
gempa bumi
sumber
6

Python 2, 175 karakter

Catatan: mencetak ke keluaran tidak seperti jawaban python sebelumnya .

Menggunakan 'e', ​​tetapi tidak a, i, o, u - 63 61 59 65 (memperbaiki kesalahan ipindah ke huruf kecil) 115 karakter (singkirkan ruang).

exec('fr%cm sys %cmp%crt*\nf%cr x %cn r%cnge(97,123):std%c%ct.wr%cte(chr(x)),'%(111,105,111,111,105,97,111,117,105))

(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) - 61 60 karakter

import string
print string.__dict__['low%crcas%c'%(101,101)]
dr jimbob
sumber
1
Solusi pertama Anda memang menggunakan surat itu 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.
BioGeek
1
exec('fr%cm sys saya mp%crt*\nf%cr ...
Gareth
BioGeek & @Gareth - keterampilan deteksi vokal manual saya menghisap. Terima kasih telah menunjukkannya; tapi saya punya e ekstra ditulis sebagai '% c' jadi pada akhirnya itu keluar.
dr jimbob
Anda dapat menghapus tanda kurung dariexec('...')
mbomb007
5

JavaScript (154)

(1) Hanya berisi i(99 karakter):

t=this;s=-t+t+t.b;z=s[1]+'bcd'+s[7]+'fghijklmn'+s[4]+'pqrst'+s[21]+'vwxyz';t[s[1]+'l'+s[7]+'rt'](z)

(2) Hanya berisi aeou(55 karakter):

t=0;s=''+t.b;alert('abcdefgh'+s[5]+'jklmnopqrstuvwxyz')

Demo: http://jsfiddle.net/SvN5n/

mellamokb
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, tidak aeouidigunakan dalam kode. Bekerja pada browser chrome.
Esc Điệp
5

Python 159 117

Seperti disebutkan dalam posting python lain, bagian tersulit adalah berurusan dengan fakta bahwa satu-satunya cara untuk output adalah dengan menggunakan printatau sys.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:

print"%cbcd%cfghijklmn%cpqrst%cvwxyz"%(97,101,111,117)

Yang ini menghindari penggunaan i untuk 104 karakter:

eval("sys.stdout.wr%cte"%105,{'sys':eval("__%cmport__('sys')"%105)})("%c"*26%tuple(range(97,123))+"\n")

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:

vars(vars().values()[0])['pr%cnt'%105]("%c"*26%tuple(range(97,123)))

Tetapi karena itu juga menghindari o, ini dapat dipasangkan dengan yang hanya menghindari a, e, u untuk 49 karakter:

print"%cbcd%cfghijklmnopqrst%cvwxyz"%(97,101,117)
Benediktus
sumber
Anda dapat membuang kompatibilitas, dan mendapatkan karakter -vars(vars().values()[0]).values()[47]
ugoren
5

Ruby 196 164 44 47

$><<"\x61bcd\x65fgh\x69jklmn\x6Fpqrst\x75vwxyz"
Cristian Lupascu
sumber
Apakah ini jawaban yang valid, karena pmengeluarkan tanda kutip di sekitar alfabet?
Mark Reed
saya setuju p xsama dengan menelepon puts str.inspect, yang menghasilkan tanda kutip di sekitarnya.
Patrick Oscity
@ Padde Anda berdua benar; berubah.
Cristian Lupascu
1
@ Padde Saya menggunakan Anda $><<, jadi +1 untuk itu dan selamat; versi Anda jauh lebih baik
Cristian Lupascu
5

Ruby, 22

$><<[*?`..?{][1,26]*''

Tidak ada surat apa pun :)

duckinator
sumber
5

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 ...

  • " E nd"
  • " Buat kamu "
  • " Su b"

Fungsi Segera

Berjalan dengan asumsi mellamokb, ini tanpa deklarasi fungsi (meninggalkan SUBdan FUNCTION) ( 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):

b=65:Do:z=z+Chr(b):b=b+1:Loop Until b=91:?z

Di bawah ini tidak menggunakan 'i' atau 'a' atau 'u' ( 33 karakter , diformat untuk dijalankan di jendela langsung):

For b=65 To 90:z=z+Chr(b):Next:?z

Di bawah ini tidak menggunakan 'a' atau 'o' atau 'u' ( 40 karakter , diformat untuk dijalankan di jendela langsung):

b=65:While b<91:z=z+Chr(b):b=b+1:Wend:?z

Jika karakter baris baru diizinkan dalam output, maka contoh di atas bisa lebih pendek:

( 37 karakter )

b=65:Do:?Chr(b):b=b+1:Loop Until b=91

( 27 karakter )

For b=65 To 90:?Chr(b):Next

( 34 karakter )

b=65:While b<91:?Chr(b):b=b+1:Wend

Kasar

Berjalan dengan jawaban Ruby w0lf

( 76 karakter , diformat untuk dijalankan di jendela langsung):

?Chr(65)&"BCD"&Chr(69)&"FGH"&Chr(73)&"JKLMN"&Chr(79)&"PQRST"&Chr(85)&"VWXYZ"
Gaffi
sumber
1
Saya pikir akan adil untuk meninggalkan Sub..End Sub, karena sebagian besar program lain tidak memasukkan definisi fungsi.
mellamokb
@ellamokb Ya, itu membuat saya merasa lebih baik. Saya akan menyiapkan beberapa contoh untuk ditambahkan ke ini.
Gaffi
2
Anggap saja sebagai "kode yang Anda jalankan di jendela langsung" :)
mellamokb
2
Nah, kalau ragu sebut saja VBScript yang bisa dimasukkan dalam file tanpa perlu Sub:)
Joey
Tetap sekelompok ruang perlu, berubah printuntuk ?sejak yang bekerja di jendela segera.
Gaffi
5

Rebmu : 15 karakter

Ctc'`L26[pn++C]

Membaca Rebmu selalu membutuhkan sedikit unmushing untuk memulai dengan:

c: tc '` l 26 [pn ++ c]

Maka membantu untuk memperluas singkatan:

c: to-char-mu '`
loop 26 [
    prin ++ c
]

Akan lebih jelas menggunakan karakter literal untuk pendahulu huruf kecil a:

c: #"`"
loop 26 [
    prin ++ c
]

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.)

Rebmu
sumber
5

<> <(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:

'`78'+11pv
:X:'z'=?;>1+

Anda dapat menjalankan kode di sini

Thijs ter Haar
sumber