พิมพ์ตัวอักษรโดยไม่ต้องใช้เสียงสระแต่ละตัว


72

แรงบันดาลใจ : ในปี 1939 ผู้ชายคนหนึ่งชื่อเออร์เนวินเซนต์ไรท์เขียนนวนิยายเรื่องที่เรียกว่าGadsbyโดยไม่ต้องใช้ตัวอักษร 'e'

งานของคุณคือการเขียนโปรแกรม (มากถึง 5) โปรแกรมในภาษาใด ๆ (ซึ่งมีไวยากรณ์เป็นข้อความ *) เพื่อส่งออกทั้ง 26 ตัวอักษรของตัวอักษรตามลำดับ อย่างไรก็ตามสำหรับแต่ละสระ aeiou อย่างน้อยหนึ่งรายการจะต้องไม่มีการเกิดสระใด ๆ

ดังนั้นจะต้องมี

  • โปรแกรมที่ไม่ได้ใช้ ' a ' หรือ ' A ' ที่ใดก็ได้ในไวยากรณ์ของโปรแกรม
  • โปรแกรมที่ไม่ได้ใช้ ' e ' หรือ ' E ' ที่ใดก็ได้ในไวยากรณ์ของโปรแกรม
  • โปรแกรมที่ไม่ได้ใช้ ' i ' หรือ ' I ' ที่ใดก็ได้ในไวยากรณ์ของโปรแกรม
  • โปรแกรมที่ไม่ได้ใช้ ' o ' หรือ ' O ' ที่ใดก็ได้ในไวยากรณ์ของโปรแกรม
  • โปรแกรมที่ไม่ได้ใช้ ' u ' หรือ ' U ' ที่ใดก็ได้ในไวยากรณ์ของโปรแกรม

abcdefghijklmnopqrstuvwxyzทั้งหมดของพวกเขาต้องเอาท์พุท

ผู้ชนะจะต้องเป็นทางออกที่ความยาวของโปรแกรมทั้งหมดสั้นที่สุด

* เนื่องจากข้อ จำกัด จะไม่เป็นเรื่องท้าทายใน Piet หรือ Whitespace


อันดับปัจจุบัน (06 มี.ค. 2557):


4
@ w0lf: ไม่มันบอกว่า "มากถึง 5 โปรแกรม" และ "ความยาวของโปรแกรมทั้งหมด" ซึ่งฉันอ่านว่า "อาจมีเพียงหนึ่งโปรแกรมและนับความยาวของมันในกรณีนี้"
schnaader

9
@PeterTaylor: คุณไม่คิดว่าการหลีกเลี่ยงการใช้เสียงสระในรูปแบบของคุณนั้นเป็นความท้าทายที่ไม่เหมือนใครใช่ไหม เป็นโปรแกรมเมอร์ JS ก็น่าสนใจโดยเฉพาะอย่างยิ่ง :)
mellamokb

2
บรรทัดใหม่เป็นที่ยอมรับในผลลัพธ์ (เช่นหนึ่งต่ออักขระ) หรือไม่ ฉันสามารถตัดรหัสบางส่วนของฉันให้สั้นลงได้ถ้าเป็นเช่นนั้น ...
Gaffi

2
เอาต์พุตตัวพิมพ์ใหญ่อนุญาตหรือไม่?
Erik the Outgolfer

2
ฉันเป็น OP ไม่อนุญาตให้ใช้ตัวพิมพ์ใหญ่
shamp00

คำตอบ:


48

Golfscript - 8 ตัวอักษร

123,97>+

8
ด่ามันไม่สามารถเอาชนะ golfscript ในแง่ของการกระชับ ...
แพทริค Oscity

18
ที่ถูกกล่าวว่าการอ่านมีกลิ่นเหม็นอย่างบ้าคลั่ง
Andrew Grey

5
มันไม่ได้แย่ขนาดนั้น;) สร้างรายชื่อ 123 ตัวเลขลบผู้ที่ไม่ได้มากกว่า 97 รวมเข้าด้วยกัน (อาร์เรย์ของตัวเลข) กับสตริง
แมคเคย์

3
ใช้91,65>+แทน
Erik the Outgolfer

31

Brainfuck, 38 ตัวอักษร

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

มีแน่นอนไม่มีสระ (หรือตัวอักษรอื่น ๆ ) ในไวยากรณ์brainfuck


2
จุดที่ถูกต้องที่นั่น! ;)
WallyWest

3
30 ไบต์:++[[<+++>->++++<]>]<<<<++[->+.<]
โม่

23

PHP, 31 ไบต์

ไม่ a, e, i, o, u:

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

สตริงไบนารีหลังเครื่องหมายตัวหนอนมีการแสดงเลขฐานสิบหกต่อไปนี้:

\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

เนื่องจากมีกระดานคะแนนภาษาฉันก็อาจส่งกระดานนี้เช่นกัน:

ทับทิม (v1.8) 18 ไบต์

$><<[*97.chr..'z']

ฉันไม่แน่ใจว่าฉันเข้าใจวิธีการทำงานนี้ ฉันขอคำอธิบายได้ไหม
Mr. Llama

เมื่อนำไปใช้กับสตริงตัวดำเนินการ ~ จะสลับบิตทั้งหมด ที่นี่ฉันได้คว่ำ abc ... xyz เนื่องจากไม่มีอักขระสัญลักษณ์ (หรือช่องว่าง) ในไบนารีสตริงจึงไม่จำเป็นต้องใส่เครื่องหมายคำพูด
primo

1
คุณอาจต้องการระบุการเข้ารหัสสำหรับสิ่งที่คุณมี
Joey

1
ISO-8859-1 อักขระ 'unprintable' สามตัวถูกลบออกเมื่อโพสต์ซึ่งเป็นสาเหตุที่ฉันรวม hex
โม่

2
ดีและอาจเป็นเวอร์ชั่น PHP ที่สั้นที่สุด 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คำสั่งในการสร้างไฟล์: php -d error_reporting=0 script.php; echoคำสั่งที่จะรัน:
axiac

16

ทับทิม ( 24 22)

แก้ไข:สามารถใส่เครื่องหมายวงเล็บได้โดยเว้น 2 ตัวอักษร:

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

24 ตัวอักษรใน Ruby:

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

มันทำงานอย่างไร

$>เป็นนามแฝงสำหรับหรือ$stdout STDOUTคุณสามารถเขียนถึงมันโดยใช้<<โอเปอเรเตอร์ คำ'%c'*26ซ้ำสตริง'%c'26 ครั้ง %ผู้ประกอบการมีการกำหนดไว้ใน String เป็นชื่อแทนไปsprintfเพื่อให้เทียบเท่ากับการเขียนstr % val sprintf(str,val)อักขระรูปแบบ%cถูกใช้เพื่อแปลงค่าถ่านเป็นถ่าน ค่าเหล่านี้มาจากการ[*97..122]สร้างอาร์เรย์ที่มีค่าจาก 97 ถึง 122 Et voilá!


ดีมาก. ฉันกำลังมองหาวิธีใช้<<แต่ลืมไป$>แล้ว
Mark Reed

1
ผมไม่ได้รู้$>มาก่อน แต่ฉันเดาจะต้องมีบางนามแฝงดอลลาร์สำหรับตัวแปร$stdoutที่ไม่มีใครสามารถจำ :)
แพทริค Oscity

21 ตัวอักษร: $><<[*"`".."z"][1,26](หมายเหตุ: ใช้งานได้ใน Ruby 1.8 เท่านั้น)
Ventero

@Ventero ไม่เพียง แต่ใน Ruby 1.8 เท่านั้น แต่ใน Ruby 1.9.2 ก็ใช้งานได้เช่นกัน แต่การใช้p [*"".. " z "] [1,26]` ยิ่งสั้นลงไปอีก
Hauleth

@Hauleth: ไม่ใช้มันใน 1.9 ไม่ก่อให้เกิดการส่งออกที่ถูกต้องในขณะที่ 1.9 Array#to_sเป็นเช่นเดียวกับArray#inspectในขณะที่ใน 1.8 มันArray#join- ดังนั้นใน 1.9 ออกเป็นแทน["a", "b", "c", "d", "e", ...] abcdef...ด้วยเหตุผลเดียวกันนี้pไม่สามารถใช้งานได้ (จะเรียกinspectใช้อาร์กิวเมนต์แทนto_s)
Ventero

16

Pyth , 1 ตัวละคร

G

Pyth กำหนดตัวแปรล่วงหน้าบางตัว G ถูกกำหนดไว้ล่วงหน้าเป็นตัวอักษรตัวพิมพ์เล็ก Pyth ยังพิมพ์แต่ละบรรทัดโดยนัยด้วยค่าส่งคืนที่สมเหตุสมผล


3
Ninja'd ฉันภายใน 3 ปี ...
Stan Strum

15

จาวาสคริปต์ (100)

ไม่ 'aeou':

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

ไม่ 'i':

alert('abcdefgh\x69jklmnopqrstuvwxyz')

+1 ดีขึ้นจากคำตอบของฉัน :) ฉันคิดเกี่ยวกับการใช้\x##รหัส แต่ไม่แน่ใจว่าถูกต้องใน JavaScript
mellamokb

ทำไมการแจ้งเตือนทั้งหมด? บนเทอร์มินัล js วัตถุจะถูกสะท้อนโดยอัตโนมัติ ('\ x61bcd \ x65fghijklmn \ x6fpqrst \ x75vwxyz') @ อักขระ 42 ตัว
antony.trupe

3
@ antony.trupe สำหรับ code golf โดยทั่วไปแล้ว IO จะทำผ่านกลไกการสร้างภาษาของ IO (หรือปลั๊กอินทั่วไป) สำหรับ JS นี้เป็นปกติalert, confirm, prompt, และconsole.log document.writeเพียงแค่ประกาศตัวอักษรสตริงไม่ได้สร้างมันเป็นเอาท์พุทเมื่อดำเนินการ มิฉะนั้นคุณจะถูกต้องและฉันจะได้ใช้มัน
zzzzBov

มันสร้างผลลัพธ์ (ตามคำนิยามฉันใช้ anyways) ในคอนโซล google chrome แต่ฉันยอมรับปัญหา; มันเป็นข้อ จำกัด โดยพลการที่จะเริ่มต้นด้วย
antony.trupe

@ antony.trupe ในภาษาอย่าง PHP คุณสามารถหลีกเลี่ยงการใช้ตัวอักษรเพราะนั่นคือวิธีการทำงานของ IO
zzzzBov

15

K, 9

_26#.Q.b6

K, 10

"c"$97+!26

K, 14

.:".Q.","c"$97

2
และวิธีโง่ ๆ ที่จะทำโดยไม่มีตัวอักษรเลย (12 ตัวอักษร):(@$`)$97+!26
Aaron Davies

1
วิธี K5 เป็นวิธีแก้ปัญหาที่สองของคุณ แต่$ใช้สัญลักษณ์แทนสตริงเพื่อควบคุมชนิดที่แปลงเป็น: `c $ 97 +! 26
JohnE

15

J, 26 23 17 16 ตัวอักษร

หลังจากผ่านไปหนึ่งชั่วโมงหรือมากกว่านั้นการค้นหาในชุดชั้นในของเจในที่สุดฉันก็พบวิธีกำจัดa.และu:คำกริยา

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

ก่อนหน้านี้:

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

ด้วยขอบคุณrandomraสำหรับ#\เคล็ดลับ


ทางออกที่ดี! การบริหารจัดการเพื่อลดระยะ 1 ถ่านใช้แทน#\ +/\
randomra

5
ออกจากลิ้นชักชุดชั้นในของฉัน
Joe


12

Bash (38)

ไม่มีสระเลย

/*/*/*ntf "/*/?ch? {\x61..z}"|/*/b?sh

โปรแกรมนี้ล้มเหลวในระบบของฉันเพราะ / * / b? sh ไม่มีอยู่ ฉันมี / usr / local / bin / bash ไม่ใช่ / bin / bash
kernigh

2
ใช้งานได้ดีในการเปลี่ยนเปลือก!
หอยทากเชิงกล

@kernigh[[ ! -d "/bin" ]] && mkdir "/bin"; sudo cp "/usr/local/bin/bash" "/bin/bash"
Stan Strum

มันจะดีกว่าถ้า/bin/shทุบตี จากนั้นรหัสสามารถลงท้ายด้วย/*/sh(36 ไบต์) แต่ฉันไม่พบระบบที่ใช้งานได้ ใน Debian, / bin / sh จะไม่ทุบตี ใน Mac เก่าของฉัน / bin / ดวลจุดโทษเป็นทุบตี 2.05b0. (1) {a..z}แต่รุ่นนี้เป็นรุ่นเก่าเกินไปและไม่ขยาย
kernigh

11

C, 90 88 84 ตัวอักษร

รวบรวมโดยใช้ 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

_startและเป็นวิธีที่ดีที่จะได้รับรอบ_exit mainแต่ถ้าสายการคอมไพล์ที่ไม่ได้มาตรฐานนั้นโอเคทำไม-DX=mainล่ะ?
ugoren

4
ยังไงก็เถอะฉัน-DX=mainรู้สึกแย่กว่า-nostartfiles(สำหรับฉัน) มันเป็นวิธีการย้ายส่วนหนึ่งของซอร์สโค้ดไปยังบรรทัดการรวบรวมและเหมือนกับการเขียน#define X mainในซอร์สโค้ดซึ่งจะไม่ถูกต้องอย่างชัดเจน ในขณะที่-nostartfilesไม่ใช่วิธีการเปลี่ยนชื่อmainแต่ลบข้อ จำกัด ที่จะต้องมีmainฟังก์ชั่น (เรียกว่า_start) ในทางกลับกันการใช้งาน-nostartfilesจะรู้สึกคล้ายกับการโกงโดยเฉพาะอย่างยิ่งเนื่องจากมีตัวอักษร "เลว" 4 ตัวจาก 5 ตัว :)
schnaader

มันเป็นทางลาดลื่น ... ระยะทางจาก-nostartfilesไปถึง-DX=mainน้อยแล้วทำไมไม่บันทึกตัวอักษรด้วย-DX=main()ล่ะ แต่ฉันไม่สามารถหาวิธีแก้ปัญหาที่ไม่เกี่ยวข้องกับคาว
ugoren

ไม่มีทางที่คุณจะสามารถกำหนดฟังก์ชั่นหลักให้เป็น "mn" ได้?
Neil

@Neil โดยเพียง -Dmn=mainแต่ทำสิ่งที่ชอบ ฟังก์ชั่น AC ต้องมีmainฟังก์ชั่นเว้นแต่เป็นตัวเลือกที่ไม่ได้มาตรฐานเช่น-nostartfilesถูกนำมาใช้
Matthew Flaschen


9

ทับทิม 20 ตัวอักษร

$><<[*97.chr..?z]*''
  • 97.chr เป็นวิธีที่ซับซ้อนในการพูด 'a'
  • .. ระบุช่วง
  • ?z เป็นวิธีที่สั้นกว่าในการพูดว่า "z"
  • [*range]สาเหตุช่วงที่จะแดงอัลมันเป็นค่าในอาร์เรย์
  • *''เป็นเช่นเดียวกับjoin(''); มันจะรวมค่าอาร์เรย์ทั้งหมดเข้าด้วยกัน
  • $><< ความสุข: พิมพ์ไปที่ stdout

รหัสนี้ใช้งานไม่ได้ ?zไม่ได้จดชวเลขแต่สำหรับ'z' 122อย่างไรก็ตามวิธีนี้ใช้งานได้ 18 ไบต์:$><<[*97.chr..'z']
โม่

มันทำงานได้ใน Ruby 1.9
steenslag

1
ฉันดาวน์โหลด 1.9.3 ... และคุณพูดถูก ทำไมพวกเขาถึงเปลี่ยนอะไรแบบนั้น ฉันเห็นได้ว่าทำไมสนามกอล์ฟอนาธิปไตยยังคงวิ่ง 1.8.7 อย่างไรก็ตามโซลูชัน 18 ไบต์ใช้งานได้กับ v1.8.7-
primo

2
(4 ปีต่อมา ... ) คุณสามารถแทนที่97.chrด้วย?\x61-1 ไบต์
Jordan

9

dc: 18 17 ตัวอักษร

97[dP1+dBD>m]dsmx

และมีตัวละครที่กล้าหาญเสียชีวิต


ฉันสงสัยอย่างนั้น ฉันห่อหัวมันไว้และฉันไม่เห็นวิธีที่จะย่อให้สั้นลง ฉันได้จบลงด้วยวิธีการแก้ปัญหาเดียวกันยกเว้นฉันใช้xสำหรับการลงทะเบียนซึ่งทำให้การแก้ปัญหาของฉันยุ่งเหยิงมากขึ้น
Hynek -Pichi- Vychodil

3
97[dP1+dBD>m]dsmx, 17 ตัวอักษร เห็นได้ชัดว่าคุณสามารถป้อนอักขระฐานสิบหกใน DC ได้เสมอ แต่เนื่องจากฐานอินพุตคือสิบค่าคือB*10+D=11*10+13=123='{'ไม่ใช่ 0xBD
Fors

โอ้โห glich ;-)
Hynek -Pichi- Vychodil

9

Powershell, 75 62 ตัวอักษร

แก้ไข:ใช้ -f (String.Format) และการทำดัชนีอาเรย์เพื่อลดความยาวรหัสอย่างมีนัยสำคัญ

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

มันทำงานอย่างไร

gmเป็นนามแฝงสำหรับget-membersดังนั้น1|gmส่งคืนสมาชิกของค่า1ซึ่งเป็นSystem.Int32ชนิด:

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)"ส่งคืนการแสดงสตริงของรายการด้านบนซึ่งเกิดขึ้นกับเสียงสระทั้งหมดที่เราต้องใช้เพื่อให้ตัวอักษรสมบูรณ์: " int C omp ar eถึง (System.Object val ue) ... "


2
สิ่งนี้จะไม่เสถียรถ้า MS เพิ่มสมาชิกใน System.Int32 แม้ว่า :-)
Joey

ผมคิดว่าจะต้องมีการ($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"ซึ่งยังเป็น 75 ตัวอักษร :)
Danko Durbić

ใช่แล้ว ฉันทำรายการผิดจากประวัติของฉัน ขอโทษ
Joey

จริง ๆ แล้วถ้าคุณแทนที่''+$(gv)ด้วย"$(gv)"คุณจะได้รับ($x="$(gv)")[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"ซึ่งคือ 74 ตัวอักษร ดี!
Danko Durbić

2
ฉันใช้ -f (String.Format) และการทำดัชนีอาร์เรย์เพื่อลดความยาวรหัส
Tim Lewis


8

Haskell, 12

['\97'..'z']

หรือการโกงนี้คืออะไร? :)


ฉันยอมรับว่าไม่ค่อยรู้เรื่อง Haskell มากนัก แต่มันทำให้ฉันมีข้อผิดพลาด:Parse error: naked expression at top level
Primo

1
คุณเรียกใช้มันในล่าม
RobAu


7

ในภาษา Perl

มันเป็นไปได้โดยไม่มีเสียงสระ

แต่ยากกว่าใน Ruby เป็นต้นซึ่งใช้ทั้งหมด101 chars แต่ไม่ต้องการการเรียกใช้ 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`

=> ผลลัพธ์: abcdefghijklmnopqrstuvwxyz

ในทางตรงกันข้ามกับ 'ดูคล้าย' PHP โซลูชั่นนี้เป็นโปรแกรมที่แท้จริง โปรแกรมถอดรหัสอ่าน:

perl -e "print STDERR a..z"

หลังจากเข้ารหัสไปยังค่าเลขฐานแปดแล้วตัวแปลภาษา perl ตัวอื่นจะถูกเรียกในระหว่างการเรียกใช้โดย `` (backticks) Backticks จะใช้เอาต์พุตดังนั้นจึงพิมพ์ไปที่ STDERR

การเข้ารหัสจะกระทำโดย sprintf:

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

และการเข้ารหัส eval'd เป็นโปรแกรมที่โพสต์ (ภายใน 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"

ความนับถือ

RBO


8
คุณสามารถลดระยะนี้ถึง 44 ตัวละครโดยเฉพาะการเข้ารหัสสระ :)
marinus

7

Perl 5, 22 ตัวอักษร

(1) มีเพียงaและe10 ตัวอักษร (ต้อง 5.10+ เรียกใช้จากบรรทัดคำสั่ง):

-Esay+a..z

(2) มี 'i' เท่านั้น, 12 ตัวอักษร:

print v97..z

หากไม่ได้รับอนุญาตให้เรียกใช้จากบรรทัดคำสั่งคุณจะต้องใช้use 5.01;say a..zสำหรับตัวแรกในราคา 7 ตัวอักษรและอีกหนึ่งเสียงสระ แต่ก็ยังไม่มี 'i' ดังนั้นมันส่งผลให้รายการที่ถูกต้องที่ 29 ทั้งหมด ตัวละคร


ตัวเลือก '-E' นั้นโอเคฉันคิดว่า แต่โดยปกติแล้วตัวอักษร 2 ตัว '-E' จะถูกเพิ่มเข้าไปในความยาวอักขระทั้งหมด
Gareth

@gareth - the -E แทนที่ -e สำหรับการรันหนึ่งซับ หากคุณใช้งานโปรแกรมจากไฟล์แสดงว่าคุณติดอยู่กับuseแม้ว่าคุณสามารถแทนที่มันด้วยตัวเลือกบรรทัดคำสั่ง-M5.01และกำจัดอักขระอีกสองตัว
Mark Reed

ฉันคิดถึงกฎพร้อม-pตัวเลือกที่เพิ่มอักขระ 2 ตัวในการนับ ดูที่คำถามเมตานี้คุณควรจะสามารถใช้งาน-M5.010ได้ฟรีหากตัวเลือกนั้นช่วยย่อรหัสของคุณ
Gareth

คุณสามารถแทนที่printคำสั่งของคุณด้วยdieการโกน 2 ตัวอักษร
ardnew

chr 97..zอาจถูกแทนที่ด้วยv97..z3 ไบต์
primo

7

APL (Dyalog) ( 11 13)

คุณอาจต้องใช้แบบอักษร APL นี่ควรจะเป็น Unicode แต่ไม่มีภาพตัวอย่าง ...

เฉพาะU(และบางทีถ้านับสระกรีก):

⎕UCS 96+⍳26

(นั่นคือ: [quad]UCS 96+[iota]26)

เท่านั้นA:

⎕A

2
Uเป็นเสียงสระ ...
Tobia

@Tobia: และใช้เวลากว่าปีกว่าที่ใครซักคนจะเห็น (รวมถึงฉันด้วย) ฉันคิดว่าไอโอต้าก็เป็นสระในขณะนี้ด้วยที่ฉันกำลังคิดอยู่ ซ่อมมัน.
marinus

สัญลักษณ์การทำงาน APL iota (U + 2373) ไม่ถือว่าเป็นตัวอักษรใน Unicode ดังนั้นจึงไม่สามารถเป็นเสียงสระได้ โปรดทราบว่ามันแตกต่างจากตัวอักษรตัวเล็กกรีก iota (U + 03B9)
ngn

7

Python 2, 83

ไม่a , i , oหรือu ; 47 :

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

ไม่มีe ; 36 :

print"abcd\x65fghijklmnopqrstuvwxyz"

6

Python 2, 175 ตัวอักษร

หมายเหตุ: พิมพ์เพื่อส่งออกแตกต่างจากคำตอบหลามก่อนหน้านี้

ใช้ 'e' แต่ไม่ใช่ a, i, o, u - 63 61 59 65 (แก้ไขการiย้ายที่ผิดไปยังตัวพิมพ์เล็ก) 115 chars (กำจัดช่องว่าง)

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

(แต่เดิมใช้การพิมพ์ด้วยเครื่องหมายจุลภาคที่แทรกช่องว่างและพิมพ์ตัวอักษรตัวพิมพ์ใหญ่ตอนนี้เห็นข้อกำหนดที่เข้มงวดสำหรับ 'abcdefghijklmnopqrstuvwxyz' เป็นเอาท์พุทดังนั้นการเพิ่มคำสั่งการนำเข้า)

ไม่ใช้ 'e' (ใช้ a, i, o, u; อาจกำจัด a, u สำหรับส่วนขยายขนาดเล็ก) - 61 60 chars

import string
print string.__dict__['low%crcas%c'%(101,101)]

1
ทางออกแรกของคุณใช้ตัวอักษรiดังนั้นควรเป็น: exec('f%cr x %cn r%cnge(65,91):pr%cnt chr(x),'%(111,105,97,105))และเรากลับไปที่ 64 ตัวอักษร
BioGeek

1
exec('fr%cm sys ฉัน mp%crt*\nf%cr ...
แกเร็ ธ

BioGeek & @Gareth - ทักษะการตรวจจับเสียงสระด้วยตนเองของฉันดูด ขอบคุณสำหรับการชี้ให้เห็น; แต่ฉันมี e พิเศษเขียนเป็น '% c' ดังนั้นในที่สุดมันก็ออกมา
dr jimbob

คุณสามารถลบวงเล็บออกจากexec('...')
mbomb007

5

จาวาสคริปต์ (154)

(1) มีเพียงi(99 ตัวอักษร):

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) มีเพียงaeou(55 ตัวอักษร):

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

ตัวอย่าง: http://jsfiddle.net/SvN5n/


$("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)`)"208chars ไม่aeouiใช้รหัส ทำงานบนเบราว์เซอร์ chrome
Esc Điệp

5

หลาม 159 117

ดังที่ได้กล่าวไว้ในโพสต์ของไพ ธ อนส่วนที่ยากที่สุดคือการจัดการกับความจริงที่ว่าวิธีเดียวที่จะส่งออกคือการใช้printหรือsys.stdout.writeทั้งสองอย่างมี i ต้องทำกับ 2 โปรแกรม (ซึ่งเป็นอิสระและไม่ใช้เปลือกโต้ตอบหลามเพื่อสร้างผลลัพธ์):

อันนี้ใช้ i สำหรับ 55 ตัวอักษรเท่านั้น:

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

อันนี้หลีกเลี่ยงการใช้ i สำหรับ 104 ตัวอักษร:

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

แก้ไข: การ พัฒนาครั้งยิ่งใหญ่ !!! ฉันคิดว่าการใช้ eval (หรือแม้แต่ exec) นั้นเป็นการโกงเล็กน้อยและไม่ได้อยู่ในจิตวิญญาณของการแข่งขันอย่างแท้จริง อย่างไรก็ตามการสืบค้นผ่านบิวด์อินฉันพบวิธีที่จะใช้ฟังก์ชั่นการพิมพ์โดยไม่ต้องใช้ i ดังนั้นนี่คือโปรแกรมหลีกเลี่ยง - i (และ o) สำหรับ 68 ตัวอักษร:

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

แต่เนื่องจากนั่นหลีกเลี่ยง o นี่สามารถจับคู่กับอันที่หลีกเลี่ยง a, u, u สำหรับ 49 ตัวอักษรเท่านั้น:

print"%cbcd%cfghijklmnopqrst%cvwxyz"%(97,101,117)

คุณสามารถvars(vars().values()[0]).values()[47]
ละทิ้ง

5

ทับทิม196 164 44 47

$><<"\x61bcd\x65fgh\x69jklmn\x6Fpqrst\x75vwxyz"

นี่เป็นคำตอบที่ถูกต้องหรือไม่เนื่องจากมีpเครื่องหมายอัญประกาศล้อมรอบตัวอักษร
Mark Reed

ฉันเห็นด้วยp xเทียบเท่ากับการโทรputs str.inspectซึ่งส่งผลให้เครื่องหมายอัญประกาศล้อมรอบ
Patrick Oscity

@padde คุณทั้งคู่ถูกต้อง การเปลี่ยนแปลง
Cristian Lupascu

1
@padde ฉันใช้$><<แล้วดังนั้น +1 สำหรับสิ่งนั้นและขอแสดงความยินดี เวอร์ชั่นของคุณดีขึ้นกว่าเดิม
Cristian Lupascu


5

VBA: 76 เดรัจฉานบังคับ 116 โดยไม่ต้อง 'โกง' (98 ถ้าบรรทัดใหม่เป็นที่ยอมรับในการส่งออก)

ฟังก์ชั่นมาตรฐาน

ต้องขอบคุณการใช้คำฟุ่มเฟื่อยของ VBA ฉันไม่เชื่อว่าสามารถทำได้โดยไม่ต้อง 'E' หรือ 'U' ในโมดูลรหัสมาตรฐาน ...

  • " E nd"
  • "F ยู nction"
  • " คุณข"

ฟังก์ชั่นทันที

การทำงานกับสมมติฐาน mellamokb ของที่นี่โดยไม่ต้องประกาศฟังก์ชัน (ออกจากSUBและFUNCTION) ( 116 ตัวอักษร , 98ถ้าการขึ้นบรรทัดใหม่เป็นที่ยอมรับในการส่งออก):

ด้านล่างไม่ใช้ 'e' และ 'a' ( 43 charsจัดรูปแบบเพื่อให้ทำงานในหน้าต่างทันที):

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

ด้านล่างไม่ใช้ 'i' หรือ 'a' หรือ 'u' ( 33 ตัวอักษรที่จัดรูปแบบเพื่อให้ทำงานในหน้าต่างทันที):

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

ด้านล่างไม่ใช้ 'a' หรือ 'o' หรือ 'u' ( 40 ตัวอักษรจัดรูปแบบให้ทำงานในหน้าต่างทันที):

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

หากอนุญาตให้ใช้อักขระขึ้นบรรทัดใหม่ในเอาต์พุตตัวอย่างด้านบนอาจสั้นกว่า:

( 37 ตัวอักษร )

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

( 27 ตัวอักษร )

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

( 34 ตัวอักษร )

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

กำลังดุร้าย

ทำงานด้วยคำตอบ Ruby ของ w0lf

( 76 ตัวอักษรจัดรูปแบบให้ทำงานในหน้าต่างทันที):

?Chr(65)&"BCD"&Chr(69)&"FGH"&Chr(73)&"JKLMN"&Chr(79)&"PQRST"&Chr(85)&"VWXYZ"

1
ฉันคิดว่ามันน่าจะยุติธรรมSub..End Subเพราะโปรแกรมอื่น ๆ ส่วนใหญ่ไม่มีคำจำกัดความของฟังก์ชั่น
mellamokb

@mellamokb ดีที่ทำให้ฉันรู้สึกดีขึ้น ฉันจะชักตัวอย่างเพื่อเพิ่มในสิ่งนี้
Gaffi

2
เพียงแค่คิดว่ามันเป็น "รหัสที่คุณเรียกใช้ในหน้าต่างทันที" :)
mellamokb

2
ดีหากมีข้อสงสัยเพียงเรียกว่า VBScript ซึ่งสามารถรวมอยู่ในไฟล์โดยไม่ต้องSub:)
โจอี้

แก้ไขพวงของช่องว่างที่ไม่มีความจำเป็นเปลี่ยนprintเป็น?เนื่องจากใช้งานได้ในหน้าต่างทันที
Gaffi

5

Rebmu : 15 ตัวอักษร

Ctc'`L26[pn++C]

อ่าน Rebmu มักจะต้องบิตของunmushingจะเริ่มต้นด้วย:

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

จากนั้นจะช่วยขยายตัวย่อ:

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

มันจะชัดเจนมากขึ้นโดยใช้ตัวอักษรสำหรับบรรพบุรุษของตัวพิมพ์เล็ก a:

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

แต่นั่นไม่ใช่ "ข้าวต้ม" ดังนั้นการแปลงคำตัวอักษรให้เป็นตัวอักษรจะผ่านไปเพื่อจุดประสงค์เดียวกัน สิ่งที่ฉันชอบเกี่ยวกับมันเช่นเดียวกับ Rebmu ส่วนใหญ่ก็คือมันมีจิตวิญญาณของโปรแกรมที่มีเหตุผลแม้จะมีการบีบอัด (คำตอบของ Golfscript นั้นสั้นกว่า แต่ไม่ได้แมปกับวิธีที่โปรแกรมเมอร์มักคิดเมื่อเขียนโค้ด)


5

<> <(ปลา) - 22 ตัวอักษร

เนื่องจาก <> <ใช้ 'o' เพื่อพิมพ์อักขระความท้าทายนี้จึงเป็นไปไม่ได้ โชคดีที่ปลาสามารถเปลี่ยนรหัสของตัวเองในขณะทำงาน สิ่งนี้ทำให้ฉันสามารถเพิ่มคำสั่งการพิมพ์ไปยังรหัสได้

รหัสนี้ใช้เสียงสระไม่มี:

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

คุณสามารถเรียกใช้รหัสได้ที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.