Con cáo nhanh nhất ở phương Đông


15

Trong tinh thần của thế giới Hello! KHÔNG lặp lại

Viết một chương trình in chuỗi "con cáo nâu nhanh chóng nhảy qua con chó lười" với dòng mới tùy chọn. Toàn bộ chương trình không được lặp lại bất kỳ ký tự nào.

Lưu ý rằng chuỗi được in sẽ lặp lại các ký tự, vì vậy bạn sẽ phải vượt qua giới hạn đó bằng cách nào đó.

Lưu ý rằng điều kiện chiến thắng là , tức là câu trả lời được bình chọn cao nhất sẽ chiến thắng.

Cập nhật: Để làm điều này dễ dàng hơn một chút, sự lặp lại được cho phép nhưng bạn phải cố gắng giảm thiểu nó. Các chương trình có ít (hoặc không) lặp lại được ưu tiên hơn các chương trình có một số lần lặp lại.


Tôi sợ điều này có lẽ quá khó, nếu không nói là không thể. Hello world!không có sự lặp lại là đủ khó để mọi người phải sử dụng các ngôn ngữ rất riêng hoặc hoàn toàn không thể giải quyết hoàn toàn nhiệm vụ, và điều này khó hơn đáng kể.
FireFly

3
Chà, chắc chắn là không thể trong C. Bạn không thể gọi các hàm hoặc sử dụng macro.
Oberon

Tôi khuyên bạn nên: in chuỗi đã cho với càng ít ký tự lặp lại càng tốt .
primo

@FireFly không mất nhiều thời gian để có câu trả lời :)
SirDarius

3
@tmartin Không, không phải vậy. Câu hỏi liên kết ủng hộ sự lặp lại trong khi câu hỏi hiện tại phạt nó.
gerrit

Câu trả lời:


32

Microsoft Word từ 97 đến 2003 (và một số phiên bản Mac Word) - 10 ký tự

Không lặp lại, nhưng không hoàn toàn khớp với thông số kỹ thuật - 10 ký tự:

=rand(2,1)

Đầu ra:

The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog.

Khớp các thông số kỹ thuật, ngoài cách viết hoa và dấu câu, một lần lặp lại - 10 ký tự:

=rand(1,1)

Đầu ra:

The quick brown fox jumps over the lazy dog.

Các phiên bản mới hơn của Microsoft Word sử dụng =rand.old(1,1)bản sao d1.

Có thể có một cách để sử dụng một trường {=SUM(3,-2)}làm đầu vào cho rand () nhưng cài đặt của tôi có vấn đề với các trường - cụ thể là chúng không hoạt động ...

"Bob" đã xác nhận rằng {=SUM(3,-2)}(với một số khó khăn) có thể được sử dụng để thay thế đầu tiên 1, nhưng =được lặp lại ...

=rand({=SUM(3,-2)},1)

Với điều kiện bạn nhận được Word để cập nhật SUMtrước, đầu ra là:

The quick brown fox jumps over the lazy dog.

Tôi không chắc cú pháp đã cho là đúng, nhưng tôi không có hệ thống nào cũ để kiểm tra. Đối với các phiên bản mới hơn, nó nên được =rand.old(1,1). Tôi cho rằng bạn đang cố gắng sử dụng 3-2 để thay thế 1 đầu tiên, nhưng nó dường như không hoạt động với tôi trong năm 2010 với rand.old hoặc rand.
Iszi

Tôi cũng không có hệ thống ở đây, sẽ kiểm tra khi tôi về nhà. Có thể cần phải sử dụng dấu ngoặc nhọn { ... }làm dấu phân cách, nhưng tôi khá chắc chắn các biểu thức có thể được sử dụng trong bất kỳ chức năng nào. Nếu không, tôi sẽ sửa lại!

2
Tôi có thể xác nhận các {=SUM(3,-2)}công việc trong Word 2007. Nhưng phương pháp này hơi phức tạp. Trước tiên, bạn phải chèn mã trường (Ctrl + F9). Sau đó, nhấp chuột phải => chỉnh sửa trường => công thức => nâng cao => nhập công thức. Bởi vì gõ nó trực tiếp không hoạt động vì bất kỳ lý do gì. Bây giờ bấm vào trường và đánh giá với Shift + F9. Và thêm=rand.old()
Bob

Có cần thiết phải sử dụng =SUM, hoặc đơn giản là có thể sử dụng trực tiếp các toán tử số học, như 3-2?
supercat

@supercat - Chúng tôi đã thử điều đó và vì một số lý do, Word không chấp nhận các biểu thức là tham số của =rand(), ví dụ như =rand(3-2,1)sẽ hoàn hảo. Tôi thực sự đã không thử =rand({=3-2},1), nhưng nó sẽ hoạt động theo cùng một cách, với sự trùng lặp =.

17

Sclipting - 36 ký tự

덆둥긇굵늖꽫긆깲닷덮긂롦닲롸껂걪덖륰댲걯덦넬댢건늆넠닆굺뎒걤닶댬首坼

(mong đợi đầu vào trống)

Giải trình:

Push the string "the quick brown ,fo,x, jumps ove,r the lazy dog,"
덆둥긇굵늖꽫긆깲닷덮긂롦닲롸껂걪덖륰댲걯덦넬댢건늆넠닆굺뎒걤닶댬
Retrieve last character from the string (",")
首
Regular expression string-split
坼

Kết quả là danh sách ["the quick brown ", "fo", "x", " jumps ove", "r the lazy dog", ""], được tự động nối thành một chuỗi duy nhất cho đầu ra.


1
Tôi đếm 105 byte, chưa kể vài lần lặp lại. Char 235 , ví dụ, được sử dụng 20 lần.
primo

11
"Không được lặp lại bất kỳ ký tự nào ", không "không được lặp lại bất kỳ byte nào".
Plutor

3
Tôi không ngạc nhiên khi Timwi, ngôn ngữ của bạn là hoàn hảo cho các thử thách "không lặp lại nhân vật".
Pierre Arlaud

13

Perl 6 (76 ký tự, không tăng gấp đôi)

Kịch bản (sẽ được xử lý bằng phần mềm bảng, nhưng có En Space lên tới Thin Space và NL và LF và tab)

say EVAL    lc q{<the Quiţk Brown fïX jUmpS ůvťɲ Tɨå ìšzY dOg>~&(127.CHR
x
43)}
  • Nó sử dụng EVAL (cảm ơn lần nữa vì đã viết hoa) và <foo bar>trích dẫn các từ hỗ trợ tất cả các ký tự khoảng trắng đặc biệt làm dấu tách từ.
  • say tham gia danh sách các chuỗi sử dụng không gian, hoạt động độc đáo ở đây :)
  • Tiếp theo tôi sử dụng ~&và 127 để bit shuffle thành ascii đơn giản. Biến chứng thêm: 'Ŭ'.lctrở thành 'ŭ'như vậy trở thành một sthay vì rtôi cần. Thêm 128 lần nữa giúp :)

Một phiên bản có dấu gạch chéo ngược thoát thay vì các ký tự unicode để hiển thị tất cả chúng đều khác nhau

say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}

Nếu bạn muốn xác minh tất cả chúng là duy nhất, hãy sử dụng tập lệnh này (tôi Qb"string"đã từng có trích dẫn cơ bản chỉ với các dấu gạch chéo ngược)

.say for 
Qb"say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}"
.comb.Bag.grep(*.value > 1).map: {.key.ord.base(16) ~ " $_"  }

Hoặc thực hiện trực tiếp bằng cách sử dụng

EVAL Qb"say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}"

10

PHP - 67 byte

<?echo$g^¶¥€¼½ˆ•.${~˜}=ÂÍåœÌýü¡¦Åþ¾’‹Ï†£‘ƲáºëÓâæݗߙ󖎸·³ø‰ï®ÜØÔ;

Sao chép-Dán, lưu dưới dạng Latin-1 (Ansi).

Đây là một mật mã xor 7 byte, sử dụng chuỗi ¶¥€¼½ˆ•cho muối.

Một nhân vật lặp đi lặp lại : $.


Bạn có thể rút ngắn thêm 3 ký tự nữa bằng cách sử dụng <?=vì bạn đã sử dụng các thẻ ngắn
Kristoffer Sall-Storgaard

À, xin lỗi, chỉ cần nhận thấy bạn đã sử dụng =
Kristoffer Sall-Storgaard

@KristofferSHansen Tôi nghĩ rằng nó có thể được sử dụng eval('Return$g=binary;')ở một số dạng mật mã (có lẽ là đảo ngược bit) để tránh sự $lặp lại, và sau đó =cũng sẽ được giải phóng.
primo

Thẻ mở không nên được bao gồm trong số byte.
TecBrat

@TecBrat Trận chung kết ;có thể được thay thế bằng thẻ đóng: điều đó có nên được tính không? Tóm lại, tôi không đồng ý. Nếu mã của bạn không chạy như hiện tại, thì đó không phải là một chương trình hoàn chỉnh.
primo

0

Haskell, 71 ký tự

map(\c->chr$mod(ord c)128)"tŨeఠquiţkĠbŲɯwnȠfѯxРjѵŭŰsܠůvťѲठѴѨѥਠlšzyଠɤկg"

Một giải pháp modulo 7 bit khác.

Nhân vật lặp đi lặp lại:

c 3
d 2
m 2
o 2
r 2
( 2
) 2
" 2

Lần đầu tiên chơi golf với Haskell; bất cứ ai có kinh nghiệm hơn về ngôn ngữ, hãy thoải mái cải thiện. Tôi muốn làm cho hàm ẩn danh không có điểm để tránh phải đề cập đến một biến hai lần, nhưng tôi không biết liệu đó có phải là lợi ích ròng hay không.


0

Mã số 35

btoa("¶ªº'$nº0ú1驲ޮØ^¬òv")

(vâng ... trích dẫn kép được lặp lại. Và đầu ra rất tệ. Đây chưa phải là một câu trả lời nghiêm túc.)


-2

Tập lệnh Batch: 7 byte

echo %1

Nếu tập lệnh được đặt tên hello.bat, hãy nhập đoạn mã này vào dòng lệnh:

hello.bat "The quick brown fox jumps over the lazy dog"

Đây là, đây là ... trường hợp không nhạy cảm! (Ý tôi là, nó không in chính xác những gì câu hỏi yêu cầu.)
Mr Lister

6
Bằng cách gõ nó vào dòng lệnh, bạn đang lặp lại các ký tự.
gerrit
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.