In bảng chữ cái mà không sử dụng mỗi nguyên âm


72

Cảm hứng : vào năm 1939, một người đàn ông tên Ernest Vincent Wright đã viết một cuốn tiểu thuyết có tên Gadsby mà không sử dụng chữ 'e'.

Nhiệm vụ của bạn là viết một bộ (tối đa 5) chương trình bằng bất kỳ ngôn ngữ nào (có cú pháp dựa trên văn bản *) để xuất ra tất cả 26 chữ cái của bảng chữ cái theo thứ tự. Tuy nhiên, đối với mỗi nguyên âm aeiou, ít nhất một trong các chương trình không được bao gồm bất kỳ sự xuất hiện nào của nguyên âm.

Vì vậy phải có

  • một chương trình không sử dụng ' a ' hoặc ' A ' ở bất kỳ đâu trong cú pháp của chương trình.
  • một chương trình không sử dụng ' e ' hoặc ' E ' ở bất kỳ đâu trong cú pháp của chương trình.
  • một chương trình không sử dụng ' i ' hoặc ' I ' ở bất kỳ đâu trong cú pháp của chương trình.
  • một chương trình không sử dụng ' o ' hoặc ' O ' ở bất kỳ đâu trong cú pháp của chương trình.
  • một chương trình không sử dụng ' u ' hoặc ' U ' ở bất kỳ đâu trong cú pháp của chương trình.

Tất cả đều phải xuất abcdefghijklmnopqrstuvwxyz.

Người chiến thắng sẽ là giải pháp trong đó độ dài của tất cả các chương trình là ngắn nhất.

* vì các ràng buộc sẽ không có nhiều thách thức trong Piet hoặc Whitespace


Bảng xếp hạng hiện tại (06/03/2014):


4
@ w0lf: Không, nó nói "tối đa 5 chương trình" và "độ dài của tất cả các chương trình", mà tôi đọc là "chỉ có thể có một chương trình và độ dài của nó được tính trong trường hợp này".
schnaader

9
@PeterTaylor: Bạn không nghĩ phải tránh sử dụng nguyên âm trong cú pháp của mình là một thách thức độc đáo? Là một lập trình viên JS, điều đó đặc biệt thú vị :)
mellamokb

2
Các dòng mới có được chấp nhận trong đầu ra (tức là một ký tự cho mỗi ký tự) không? Tôi có thể rút ngắn một số mã của mình nếu đó là trường hợp ...
Gaffi

2
Là đầu ra chữ hoa được phép?
Erik the Outgolfer

2
Tôi là OP. Chữ hoa không được phép.
shamp00

Câu trả lời:


48

Golfscript - 8 ký tự

123,97>+

8
chết tiệt, thực sự không thể đánh bại golfs về sự đồng nhất ...
Patrick Oscarity

18
Điều đó đang được nói, sự dễ đọc bốc mùi như điên.
Andrew Gray

5
Điều đó không tệ;) tạo ra một danh sách 123 số, loại bỏ những người không lớn hơn 97, ép buộc nó (mảng số) thành một chuỗi.
McKay

3
Sử dụng 91,65>+thay thế.
Erik the Outgolfer

31

Brainfuck, 38 ký tự

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

Tất nhiên, không có nguyên âm (hoặc bất kỳ chữ cái nào khác) trong cú pháp brainfuck .


2
Điểm hợp lệ đấy! ;)
WallyWest

3
30 byte:++[[<+++>->++++<]>]<<<<++[->+.<]
primo

23

PHP, 31 byte

Không có a, e, i, o, u:

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

Chuỗi nhị phân sau dấu ngã có biểu diễn hex sau:

\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

Vì có bảng điểm ngôn ngữ, tôi cũng có thể gửi bảng này:

Ruby (v1.8) 18 byte

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

Tôi không chắc tôi hiểu cách thức hoạt động của nó. Tôi có thể nhận được một lời giải thích?
Ông Llama

Khi được áp dụng cho một chuỗi, toán tử ~ đảo ngược tất cả các bit. Ở đây tôi đã đảo ngược abc ... xyz. Vì không có ký hiệu ký tự (hoặc khoảng trắng) trong chuỗi nhị phân, nên cũng không cần trích dẫn.
primo

1
Bạn có thể muốn chỉ định một mã hóa cho những gì bạn có ở đó.
Joey

1
iso-8859-1. Ba ký tự 'không thể in được đã bị xóa khi được đăng, đó là lý do tại sao tôi đưa vào hex.
primo

2
Đẹp và có lẽ là phiên bản PHP ngắn nhất có thể. Một lệnh để tạo tập tin : 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. Lệnh chạy nó : php -d error_reporting=0 script.php; echo.
axiac

16

Hồng ngọc ( 24 22)

Chỉnh sửa: dấu ngoặc đơn có thể được bỏ qua, ít hơn 2 ký tự:

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

24 ký tự trong Ruby:

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

Làm thế nào nó hoạt động

$>là một bí danh cho $stdouthoặc STDOUT. Bạn có thể viết cho nó bằng cách sử dụng <<toán tử. Thuật ngữ '%c'*26lặp lại chuỗi '%c'26 lần. Các %nhà điều hành được xác định trên String như một bí danh để sprintf, vì vậy str % valtương đương với văn bản sprintf(str,val). Ký tự định dạng %cđược sử dụng để chuyển đổi giá trị char thành char. Các giá trị này đến từ [*97..122]đó tạo ra một mảng chứa các giá trị từ 97 đến 122. Et voilá!


Rất đẹp. Tôi đang tìm cách để sử dụng <<nhưng đã quên mất $>.
Mark Reed

1
Tôi thậm chí còn không biết về điều $>đó trước đây, nhưng tôi đoán rằng phải có một số bí danh biến đổi đô la $stdoutmà không ai có thể nhớ :)
Patrick Oscarity

21 ký tự: $><<[*"`".."z"][1,26](lưu ý: điều này chỉ hoạt động trong Ruby 1.8)
Ventero

@Ventero không chỉ trong Ruby 1.8, trong Ruby 1.9.2 cũng hoạt động. Nhưng sử dụng p [*"".." z "] [1,26]` thậm chí còn ngắn hơn.
Hauleth

@Hauleth: Không, chạy nó trong 1.9 không tạo ra đầu ra chính xác, vì trong 1.9 Array#to_scũng giống như Array#inspecttrong 1.8, Array#joinvì vậy trong 1.9, đầu ra ["a", "b", "c", "d", "e", ...]thay vì abcdef.... Vì lý do tương tự, pkhông thể được sử dụng (nó gọi inspectcác đối số của nó, thay vì to_s).
Ventero

16

Pyth , 1 nhân vật

G

Pyth xác định trước các biến số nhất định. G được xác định trước là bảng chữ cái viết thường. Pyth cũng ngầm in mỗi dòng với giá trị trả về hợp lý.


3
Ninja đã cho tôi 3 năm ...
Stan Strum

15

JavaScript (100)

Không 'aeou':

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

Không có I':

alert('abcdefgh\x69jklmnopqrstuvwxyz')

+1 Cải thiện tốt về câu trả lời của tôi :) Tôi đã nghĩ về việc sử dụng \x##mã nhưng không chắc chắn liệu chúng có hợp lệ trong JavaScript hay không.
mellamokb

Tại sao các cảnh báo ở tất cả? trên thiết bị đầu cuối js, các đối tượng được tự động lặp lại. ('\ x61bcd \ x65fghijklmn \ x6fpqrst \ x75vwxyz') @ 42 ký tự.
antony.trupe

3
@ antony.trupe, đối với môn đánh gôn, IO thường được thực hiện thông qua các cơ chế IO (hoặc các plugin phổ biến) của ngôn ngữ. Đối với JS này là thường alert, confirm, prompt, console.log, và document.write. Đơn giản chỉ cần khai báo một chuỗi ký tự không tạo ra nó như là đầu ra khi được thực thi. Nếu không, bạn sẽ đúng, và tôi đã sử dụng nó.
zzzzBov

nó tạo ra đầu ra (theo định nghĩa tôi sử dụng anyways) trong bảng điều khiển chrome của google, nhưng tôi thừa nhận vấn đề này; đó là một hạn chế tùy ý để bắt đầu.
antony.trupe

@ antony.trupe, trong một ngôn ngữ như PHP, bạn có thể thoát khỏi việc sử dụng một nghĩa đen, bởi vì đó là cách nó thực hiện IO.
zzzzBov

15

K, 9

_26#.Q.b6

K, 10

"c"$97+!26

K, 14

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

2
và một cách ngớ ngẩn để làm điều đó mà không có chữ cái nào cả (12 ký tự):(@$`)$97+!26
Aaron Davies

1
Cách K5 gần như là giải pháp thứ hai của bạn nhưng $lấy các ký hiệu thay vì chuỗi để điều khiển loại được chuyển đổi thành: `c $ 97 +! 26
JohnE

15

J, 26 23 17 16 ký tự

Sau một giờ hoặc lục lọi trong ngăn kéo đồ lót của J, cuối cùng tôi cũng tìm được cách loại bỏ các động từ a.u:động từ.

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

Trước đây:

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

với lời cảm ơn ngẫu nhiên cho các #\mẹo.


Giải pháp tốt đẹp! Quản lý để rút ngắn với 1 char sử dụng #\ thay vì +/\ .
Randomra

5
Ra khỏi ngăn kéo đồ lót của tôi
Joe

14

R, 17 + 19 = 36 ký tự

không ae (17):

intToUtf8(97:122)

không iou (19):

cat(letters,sep="")

12

Bash (38)

Không có nguyên âm nào cả.

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

Chương trình này không thành công trên hệ thống của tôi, vì / * / b? Sh không tồn tại. Tôi có / usr / local / bin / bash, không / bin / bash.
hạt nhân

2
Sử dụng tốt đẹp của vỏ toàn cầu!
Ốc cơ khí

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

Sẽ tốt hơn nếu /bin/shlà bash. Sau đó, mã có thể kết thúc bằng /*/sh(36 byte). Nhưng tôi đã không tìm thấy một hệ thống nơi điều này hoạt động. Trong Debian, / bin / sh không phải là bash. Trong máy Mac cũ của tôi, / bin / sh là bash 2.05b0. (1), nhưng phiên bản này quá cũ và không mở rộng {a..z}.
hạt nhân

11

C, 90 88 84 ký tự

Biên dịch sử dụng 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_exitlà một cách tốt đẹp để có được xung quanh main. Nhưng nếu một dòng biên dịch không chuẩn là OK, tại sao không -DX=main?
ugoren

4
Bằng cách nào đó, -DX=maincảm thấy tồi tệ hơn -nostartfiles(đối với tôi). Đó là một cách để di chuyển một phần của mã nguồn sang dòng biên dịch và nó cũng giống như việc viết #define X mainmã nguồn sẽ không hợp lệ rõ ràng. Trong khi đó -nostartfileskhông phải là một cách để đổi tên main, nhưng loại bỏ hạn chế rằng phải có một mainchức năng (được gọi là _start). Mặt khác, việc sử dụng -nostartfilescó cảm giác hơi giống như gian lận, đặc biệt là vì nó chứa 4 trong số 5 chữ cái "xấu" :)
schnaader

Đó là một con dốc trơn trượt ... Khoảng cách từ -nostartfilesđến -DX=mainrất nhỏ, và tại sao không lưu lại một số ký tự -DX=main(). Nhưng tôi không thể tìm ra giải pháp nào không liên quan đến cá.
ugoren

Chẳng có cách nào để bạn có thể định nghĩa hàm chính là "mn" chẳng hạn?
Neil

@Neil, chỉ bằng cách làm một cái gì đó như -Dmn=main. Chức năng AC phải có mainchức năng trừ khi -nostartfilessử dụng tùy chọn không chuẩn .
Matthew Flaschen


9

Ruby, 20 ký tự

$><<[*97.chr..?z]*''
  • 97.chr là một cách nói công phu 'a'
  • .. chỉ định một phạm vi
  • ?z là một cách ngắn hơn để nói "z"
  • các [*range] nguyên nhân phạm vi để splat al nó giá trị trong một mảng
  • *'' giống như join('') ; nó dán tất cả các giá trị mảng với nhau.
  • $><< Perlicism: in ra thiết bị xuất chuẩn.

Mã này dường như không hoạt động. ?zkhông phải là tốc ký 'z', mà là cho 122. Tuy nhiên, điều này không hoạt động trong 18 byte:$><<[*97.chr..'z']
primo

hoạt động trong Ruby 1.9.
steenslag

1
Tôi đã tải xuống 1.9.3 ... và bạn đã đúng. Tại sao họ lại thay đổi một cái gì đó như thế? Tôi có thể thấy lý do tại sao golf vô chính phủ vẫn chạy 1.8.7. Dù sao, giải pháp 18 byte hoạt động cho v1.8.7-
primo

2
(4 năm sau ...) Bạn có thể thay thế 97.chrbằng ?\x61-1 byte.
Jordan

9

dc: 18 17 ký tự

97[dP1+dBD>m]dsmx

Và đã chết một nhân vật dũng cảm.


Tôi nghi ngờ như vậy. Tôi đang quấn đầu xung quanh nó và tôi không thấy cách nào để rút ngắn nó. Tôi đã kết thúc với cùng một giải pháp ngoại trừ tôi đã sử dụng xđể đăng ký, điều này làm cho giải pháp của tôi trở nên khó hiểu hơn.
Hynek -Pichi- Vychodil

3
97[dP1+dBD>m]dsmx, 17 ký tự. Rõ ràng bạn luôn có thể nhập các ký tự thập lục phân trong DC, nhưng vì cơ sở đầu vào là mười giá trị B*10+D=11*10+13=123='{', và không phải là 0xBD.
Dành cho

Ôi, thật tuyệt vời ;-)
Hynek -Pichi- Vychodil

9

Powershell, 75 62 ký tự

Chỉnh sửa: Được sử dụng -f (String.Format) và lập chỉ mục mảng để giảm đáng kể độ dài mã.

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

Làm thế nào nó hoạt động

gmlà một bí danh cho get-members, vì vậy 1|gmtrả về các thành viên của giá trị 1, thuộc System.Int32loại:

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)"trả về một chuỗi đại diện của danh sách trên, có chứa tất cả các nguyên âm mà chúng ta cần để hoàn thành bảng chữ cái: " int C omp ar eTo (System.Object val ue) ..."


2
Điều này không ổn định nếu MS thêm thành viên vào System.Int32, mặc dù :-)
Joey

Tôi nghĩ rằng đó cũng phải ($x=''+$(gv))[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"là 75 ký tự :)
Danko Durbić

Argh, phải rồi. Tôi đánh dấu các mục sai từ lịch sử của tôi. Lấy làm tiếc.
Joey

Trên thực tế, nếu bạn thay thế ''+$(gv)bằng "$(gv)"bạn nhận ($x="$(gv)")[8]+"bcd$($x[4])fgh$($x[25])jklmn$($x[26])pqrst$($x[19])vwxyz"được 74 ký tự. Đẹp!
Danko Durbić

2
Tôi đã sử dụng -f (String.Format) và lập chỉ mục mảng để giảm đáng kể độ dài mã.
Tim Lewis

8

BASH: 40 ký tự

  • Không aeiousử dụng.
  • Không có ký tự đại diện được sử dụng.
`tr c-y '\141-w'<<<'rtkpvh %s c'` {b..z}

8

Haskell, 12

['\97'..'z']

Hay là gian lận này? :)


Tôi thừa nhận không biết nhiều về Haskell, nhưng nó mang lại cho tôi lỗi này:Parse error: naked expression at top level
primo

1
Bạn chạy nó trong trình thông dịch
RobAu

7

MATLAB, 12 + 20 = 32 ký tự

Không có eiou (12):

char(97:122)

Không có aeou (20)

fprintf('%s',97:122)

7

Ở Perl,

nó cũng có thể mà không cần bất kỳ nguyên âm

nhưng khó hơn nhiều so với trong Ruby, v.v ... Điều này sử dụng tổng cộng 101 ký tự nhưng không yêu cầu gọi dòng cmd (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`

=> Kết quả: abcdefghijklmnopqrstuvwxyz

Trái ngược với Giải pháp PHP 'tương tự' , đây là một chương trình thực sự . Chương trình giải mã đọc:

perl -e "print STDERR a..z"

Sau khi mã hóa thành các giá trị bát phân, một trình thông dịch perl khác được gọi trong khi chạy bởi `` (backticks). Các backticks sẽ tiêu thụ đầu ra, do đó, nó được in thành STDERR.

Việc mã hóa được thực hiện bởi sprintf:

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

và mã hóa eval'd chương trình được đăng (trong 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"

Trân trọng

rbo


8
Bạn có thể rút ngắn ký tự này xuống còn 44 ký tự chỉ bằng cách mã hóa các nguyên âm :)
marinus

7

Perl 5, 22 ký tự

(1) chỉ chứa ae, 10 ký tự (yêu cầu 5.10+, chạy từ dòng lệnh):

-Esay+a..z

(2) chỉ chứa 'i', 12 ký tự:

print v97..z

Nếu không được phép chạy từ dòng lệnh, thì bạn cần sử dụng use 5.01;say a..zcho dòng đầu tiên, với chi phí 7 ký tự và thêm một nguyên âm, nhưng nó vẫn không có 'i', do đó, nó dẫn đến một mục nhập hợp lệ ở tổng số 29 nhân vật.


Tôi nghĩ tùy chọn '-E' là ổn, nhưng thường thì 2 ký tự '-E' được thêm vào tổng chiều dài ký tự.
Gareth

@gareth - -E thay thế cho -e để chạy một lớp lót. Nếu bạn đang chạy một chương trình từ một tệp, thì bạn bị mắc kẹt vớiuse , mặc dù bạn có thể thay thế nó bằng tùy chọn dòng lệnh -M5.01và tắt thêm hai ký tự.
Mark Reed

Tôi đã nghĩ đến quy tắc với -ptùy chọn trong đó 2 ký tự được thêm vào số đếm. Nhìn vào câu hỏi meta này , bạn sẽ có thể sử dụng-M5.010 miễn phí nếu tùy chọn đó giúp rút ngắn mã của bạn.
Gareth

bạn có thể thay thế printtuyên bố của mình bằngdie cách cạo sạch 2 ký tự
ardew

chr 97..zcó thể được thay thế bằng v97..z3 byte.
primo

7

APL (Dyalog) ( 11 13)

Bạn có thể cần một phông chữ APL. Đây được coi là Unicode nhưng không có bản xem trước ...

Chỉ U(và có lẽ nếu tính nguyên âm Hy Lạp):

⎕UCS 96+⍳26

(Đó là [quad]UCS 96+[iota]26:)

Chỉ A:

⎕A

2
Ulà một nguyên âm ...
Tobia

@Tobia: và phải mất hơn một năm để ai đó thấy điều đó (bao gồm cả tôi). Tôi đoán iota thực sự cũng là một nguyên âm bây giờ tôi đang nghĩ về nó. Đã sửa nó.
bến

Ký hiệu chức năng APL iota (U + 2373) không được coi là một chữ cái trong Unicode, và do đó không thể là một nguyên âm. Lưu ý rằng nó khác với chữ iota nhỏ của Hy Lạp (U + 03B9).
ngn

7

Con trăn 2, 83

Không có a , i , o hoặc u ;47 :

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

Không có e ; 36 :

print"abcd\x65fghijklmnopqrstuvwxyz"

6

Python 2, 175 ký tự

Lưu ý: in ra đầu ra không giống như câu trả lời python trước đó .

Sử dụng 'e', ​​nhưng không có a, i, o, u - 63 61 59 65 (sửa lỗi idi chuyển nhầm sang chữ thường) 115 ký tự (loại bỏ khoảng trắng).

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

(Ban đầu, nó đã sử dụng in với dấu phẩy chèn một khoảng trắng; cũng in chữ in hoa. Bây giờ đã thấy các yêu cầu nghiêm ngặt đối với 'abcdefghijklmnopqrstuvwxyz' làm đầu ra; vì vậy, thêm câu lệnh nhập).

Không sử dụng 'e' (sử dụng a, i, o, u; có thể loại bỏ một cách tầm thường a, u cho phần mở rộng nhỏ) - 61 60 ký tự

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

1
Giải pháp đầu tiên của bạn là sử dụng chữ cái i, vì vậy nó sẽ là: exec('f%cr x %cn r%cnge(65,91):pr%cnt chr(x),'%(111,105,97,105))và chúng tôi trở lại 64 ký tự.
BioGeek

1
exec('fr%cm sys tôi mp%crt*\nf%cr ...
Gareth

BioGeek & @Gareth - kỹ năng phát hiện nguyên âm thủ công của tôi hút. Cảm ơn đã chỉ ra nó; nhưng tôi đã có thêm một e được viết dưới dạng '% c' nên cuối cùng nó cũng phát triển.
dr jimbob

Bạn có thể xóa dấu ngoặc đơn từexec('...')
mbomb007

5

JavaScript (154)

(1) Chỉ chứa i(99 ký tự):

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) Chỉ chứa aeou(55 ký tự):

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

Bản trình diễn: 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, không aeouiđược sử dụng trong mã. Hoạt động trên trình duyệt chrome.
Esc Điệp

5

Con trăn 159 117

Như đã đề cập trong bài đăng về con trăn khác, phần khó nhất là xử lý thực tế rằng cách duy nhất để xuất là sử dụng printhoặc sys.stdout.write, cả hai đều chứa i. Phải thực hiện với 2 chương trình (là tự do và không sử dụng trình vỏ tương tác python để tạo đầu ra):

Cái này chỉ sử dụng i cho 55 ký tự:

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

Điều này tránh sử dụng i cho 104 ký tự:

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

EDIT: Đột phá lớn !!! Tôi đã nghĩ rằng việc sử dụng eval (hoặc thậm chí là exec) là một chút gian lận và không thực sự theo tinh thần của cuộc thi. Dù sao, việc truy tìm các nội trang tôi đã tìm được cách giữ chức năng in mà không cần sử dụng i. Vì vậy, đây là chương trình tránh-i (và o) cho 68 ký tự:

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

Nhưng vì điều đó cũng tránh được o, nên điều này có thể được ghép nối với một chỉ tránh a, e, u trong 49 ký tự:

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

Bạn có thể loại bỏ khả năng tương thích và có được một nhân vật -vars(vars().values()[0]).values()[47]
ugoren

5

Hồng ngọc 196 164 44 47

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

Đây có phải là một câu trả lời hợp lệ, vì pđầu ra dấu ngoặc kép quanh bảng chữ cái?
Mark Reed

tôi đồng ý p xtương đương với việc gọi puts str.inspect, dẫn đến các dấu ngoặc kép xung quanh.
Patrick Oscarity

@padde bạn đều đúng cả; đã thay đổi
Cristian Lupascu

1
@padde Tôi đã sử dụng của bạn $><<, vì vậy +1 cho điều đó và xin chúc mừng; phiên bản của bạn tốt hơn nhiều
Cristian Lupascu


5

VBA: 76 vũ phu, 116 mà không 'gian lận' (98 nếu dòng mới được chấp nhận ở đầu ra)

Chức năng tiêu chuẩn

Nhờ tính dài dòng của VBA, tôi không tin rằng điều này có thể được thực hiện mà không có 'E' hoặc 'U' trong một mô-đun mã tiêu chuẩn ...

  • " E nd"
  • "F u nction"
  • "S u b"

Chức năng ngay lập tức

Chạy với giả định của mellamokb, ở đây không có khai báo hàm (bỏ qua SUBFUNCTION) ( 116 ký tự , 98 nếu dòng mới được chấp nhận trong đầu ra):

Dưới đây không sử dụng 'e' hay 'a' ( 43 ký tự , được định dạng để chạy trong cửa sổ ngay lập tức):

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

Dưới đây không sử dụng 'i' hay 'a' hay 'u' ( 33 ký tự , được định dạng để chạy trong cửa sổ ngay lập tức):

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

Dưới đây không sử dụng 'a' hay 'o' hay 'u' ( 40 ký tự , được định dạng để chạy trong cửa sổ ngay lập tức):

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

Nếu các ký tự dòng mới được cho phép trong đầu ra, thì các ví dụ trên có thể ngắn hơn:

( 37 ký tự )

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

( 27 ký tự )

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

( 34 ký tự )

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

Lực lượng vũ phu

Chạy với câu trả lời Ruby của w0lf

( 76 ký tự , được định dạng để chạy trong cửa sổ ngay lập tức):

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

1
Tôi nghĩ sẽ công bằng khi bỏ Sub..End Subđi, vì hầu hết các chương trình khác không bao gồm định nghĩa hàm.
mellamokb

@mellamokb Vâng, điều đó làm tôi cảm thấy tốt hơn. Tôi sẽ lấy một số ví dụ để thêm vào đây.
Gaffi

2
Chỉ cần nghĩ về nó như là "mã bạn chạy trong cửa sổ ngay lập tức" :)
mellamokb

2
Chà, nếu nghi ngờ, chỉ cần gọi nó là VBScript có thể được bao gồm trong một tệp mà không cần a Sub:)
Joey

Đã sửa một loạt các không gian không cần thiết, thay đổi printthành ?vì nó hoạt động trong cửa sổ ngay lập tức.
Gaffi

5

Rebmu : 15 ký tự

Ctc'`L26[pn++C]

Đọc Rebmu luôn đòi hỏi một chút unmushing để bắt đầu với:

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

Sau đó, nó giúp mở rộng các chữ viết tắt:

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

Sẽ rõ ràng hơn khi sử dụng một ký tự chữ cho tiền thân của chữ thường a:

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

Nhưng điều đó không "nham nhở", vì vậy việc chuyển đổi một từ theo nghĩa đen thành một ký tự được chuyển cho cùng một mục đích. Những gì tôi thích về nó, như với hầu hết Rebmu, là nó có tinh thần của một chương trình hợp lý mặc dù nén. (Câu trả lời của Golfscript ngắn hơn nhưng không phù hợp với cách lập trình viên thường nghĩ khi viết mã.)


5

<> <(Cá) - 22 ký tự

Vì <> <sử dụng 'o' để in một ký tự, thử thách này dường như không thể thực hiện được. May mắn thay, cá có thể thay đổi mã riêng của mình trong thời gian chạy. Điều này cho phép tôi thêm hướng dẫn in vào mã.

Mã này không sử dụng nguyên âm nào:

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

Bạn có thể chạy mã ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.