Chào thế giới!!! Phân phối Fibonacci


21
  1. Chương trình của bạn sẽ xuất chính xác: Hello world!!!có hoặc không có linefeed sau.
  2. Chương trình của bạn sẽ không có đầu vào.
  3. Phân phối ký tự mã nguồn phải chính xác theo:
    • Số lượng ký tự số (0-9) phải chính xác là một số thứ tự chuỗi.
    • Số lượng các ký tự không phải là số khác ! (0-9) trong mã nguồn phải chính xác là số thứ tự chuỗi trước số thứ tự chuỗi trên.

Bốn ví dụ về phân phối ký tự hợp lệ trong sourcecode:

  • 13 số, 8 ký tự không phải là số.
  • 34 số, 21 ký tự không phải là số.
  • 55 số, 34 ký tự không phải là số.
  • 89 số, 55 ký tự không phải là số.

Đây là mã golf, mã ngắn nhất tính bằng byte thắng! Chúc may mắn!

Chỉnh sửa: Vì câu hỏi này có các ràng buộc về kích thước mã nguồn kết hợp với mã golf, câu trả lời được chấp nhận (nếu nhiều hơn một chia sẻ độ dài ký tự chiến thắng bằng nhau) sẽ là câu trả lời với hầu hết số phiếu (và ít nhất là số ký tự): 2014- 03-01.


6
Do đó, tất cả các giải pháp đều có số lượng ký tự là một số Wikipedia.
Howard


1
Thậm chí có thể làm điều này trong ít hơn 55 ký tự? Đầu ra bắt buộc có 14 ký tự và tôi không thể nghĩ ra một ngôn ngữ có thể sử dụng số để xuất ký tự mà không sử dụng ít nhất một ký tự cho mỗi ký tự.
Justin

2
@Plarsen chắc chắn không ổn
John Dvorak

1
Được rồi, tôi sẽ không thay đổi các quy tắc sau đó :)
Plarsen

Câu trả lời:


27

Dấu nhắc lệnh Windows - 34, 8 , 5 ký tự, (2 bên dưới)

* Những cái này có thể hoặc không thể phá vỡ quy tắc 2, nhưng dù sao thì đây vẫn là

%~099

Đặt tên cho tệp:

&start call echo Hello world!!!&exit -b .cmd


Bây giờ, hãy cho phép hệ thống tệp bị hỏng một chút - 2 ký tự (hoặc ít hơn nếu bạn muốn)

A1

Đặt tên cho tệp (sử dụng phương pháp không chính thống ưa thích của bạn):

"&start call echo Hello world!!!&exit&.cmd

Cái này hoạt động ra sao:

Vì các tập lệnh cmd được gọi với 'cmd.exe / C "% 1"% *', lệnh được thực thi sẽ là:

cmd.exe /C "c:\PATH_TO_THE_SCRIPT\"&start call echo Hello world!!!&exit&.cmd"

theo thứ tự sau:

  • Không thể thực thi "c: \ PATH_TO_THE_SCRIPT \"
  • Mở một bản in vỏ mới Xin chào thế giới! \ N
  • Thoát khỏi vỏ ban đầu

2
Ồ Tôi nghĩ rằng chúng tôi đã có một người chiến thắng nếu các quy tắc không nói không có đầu vào. +1 dù sao cho suy nghĩ bên ngoài hộp.
Plarsen

2
Mã golf với Windows CMD ... +1. Ngoài ra, người ta cho rằng "không có đầu vào" có thể có nghĩa là "không đọc STDIN": P
Camilo Martin

1
Đó là một mẹo thú vị cho những người chơi golf mã khác, quá, hãy viết mã thật vào tên tệp và sử dụng một cái gì đó giống như eval $0để thực thi nó <xe đẩy>
Tobia

1
Không thể nào!! 5 ký tự? Cách tiếp cận thực sự thú vị
Plarsen

1
Trong thực tế, tôi vừa đăng một giải pháp 2 char bên dưới.
Tobia

20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

Đây là một biểu thức MySQL để đánh giá Hello world!!!, giả sử sql_modecài đặt bao gồm PIPES_AS_CONCAT. Nó chứa chính xác 21 chữ số và 13 chữ số không.

Cho dù điều này đủ điều kiện là một mục hợp lệ, tôi để nó cho bồi thẩm đoàn.

Thí dụ

mysql> select x'48656C6C6F20776F726C642121'||'!';
+------------------------------------+
| x'48656C6C6F20776F726C642121'||'!' |
+------------------------------------+
| Hello world!!!                     |
+------------------------------------+
1 row in set (0.00 sec)

5
Cái gì ... CMD và SQL giành được mã golf ??
Camilo Martin

Các select;được cho là một phần của báo cáo kết quả, nhưng vẫn còn một giải pháp thông minh.
Primo

@primo họ là, đó là lý do tại sao tôi không chắc chắn điều này có đủ điều kiện hay không. Nhưng tôi nghĩ tôi sẽ đăng nó vì sự vui nhộn ;-)
Tobia


11

GolfScript, 55 ký tự

[72 101 108 108 111 32 119 111 114 108 100 33 {.}2*]''+

Không tìm được cách có giải pháp 34 ký tự, do đó tôi đã tạo ra giải pháp này.


10

Befunge 98 - 55

a"!!!dlrow olleH"ek,@1235813213455891442333776109871597

Quyết định làm điều đó với một dòng mới, vì nó không tốn kém gì. Các số này là các giá trị được nối của chuỗi Fibonacci.


8

Con trăn 34-55

print "Hello world%s"%("!"*int(3.141592653589793238462643383279502884197169399375105820))

Vâng. Tôi lãng phí chúng chữ số. Bạn tính làm như thế nào với nó?


Ai biết pi ~ 3 sẽ rất hữu ích!
Kyle Kanos

1
Câu hỏi cho biết 21 số không cộng với 34 số, câu trả lời của bạn là 34 không số cộng với 21 số.
dùng12205

1
"thế giới xin chào" phải là "Xin chào thế giới"; đó là viết hoa chữ h.
Justin

7

C (89 ký tự)

main() {
int i[0000000000000004]={1819043144,1870078063,560229490,2566922529};
puts(i);
}

Mặc dù những điều trên là hợp lệ, thật không may, những nỗ lực của tôi để thu gọn nó với chương trình sau đây không đáp ứng được thông số kỹ thuật. Tôi cảm thấy như nó đáng để xem xét và có lẽ người khác có thể rút ngắn lại một chút (64 ký tự, 37 chữ số, 27 chữ số). Để biên dịch nó, bạn sẽ phải sử dụng tiếng kêu và với -fms-extensions.

main(){puts((__int128[]){671944380693508453879479574226248i8});}

Chữ ghép , là tên cho những gì bạn đang tìm kiếm. Tôi đang cố gắng sử dụng chúng để giảm xuống còn 21 ký tự!
charmlessCoin

Số lượng không phải là số thấp nhất tôi có thể đạt được là 26, bằng cách thực hiện itoàn cầu (bỏ qua int). Sử dụng longcó thể tiết kiệm dấu phẩy, nhưng chi phí nhiều hơn. 21 là rất xa.
xấu xí

Vâng, đó là rất nhiều không gian lãng phí. Sử dụng thủ thuật nhỏ đó, tôi có thể hiểu được main(){puts((int[]){1819043144,1870078063,560229490,8481});}nhưng đó vẫn là 60 ký tự. Nếu tôi có thể loại bỏ chỉ một vài điều nữa ... Chỉnh sửa: wow, vậy toàn cầu không phải có một tuyên bố? Ai biết?
vmrob

@vmrob, toàn cầu phải có tờ khai. Nhưng loại mặc định int, vì vậy a;tương đương với int a;.
ugoren

@ugoren Tôi biết rằng họ phải có một tuyên bố, tôi chỉ không nhận ra nó được mặc định là int!
vmrob

6

Windows PowerShell (cũng có thể là Bash), 55

curl -L bit.ly/1b9q8ve?1=123581321345589144233377610987

Bạn đã không nói bất cứ điều gì về truy cập mạng, vì vậy đây là một giải pháp bẩn. Tôi đã nhận được một bit.ly URL với vài chữ cái đủ cho lần thử thứ hai. Thật không may, nó vẫn còn 21 chữ số, cần 34 chữ số để sử dụng hoặc lãng phí.


Bạn biết bạn có thể chỉnh sửa các liên kết bit.ly phải không?
TimTech

Ý bạn là gì, chỉnh sửa? Ngoài ra, tôi sẽ không nhận được điều này dưới 13 chữ cái trong mọi trường hợp.
John Dvorak

Bạn có thể nhấn bút chì bên cạnh "Sao chép" và chỉnh sửa liên kết. Nếu bạn làm như vậy, tất cả các phiên bản cũ vẫn sẽ hoạt động.
TimTech

1
Rút ngắn xuống còn 34! curl 37.187.42.18/?hw=112358132134
Dom Hastings


6

Korn Shell, 21

echo $0
#123456789012

Kịch bản phải được gọi là "Xin chào thế giới !!!" :)


5

Bash, 2 ký tự

Rất tốt, trong trường hợp không chắc, câu trả lời của Robert không bị loại, đây là của tôi:

$0

Đặt tên cho tệp echo Hello world!!!và thực hiện với sh.


5

Con trăn

print'092020090920200948656c6c6f20776f726c642121212009200909200920'.decode('hex').strip()

chữ số: 55 chữ số không: 34


Lưu ý không có ý kiến ​​trong giải pháp. chỉ mã.
Elisha

4

PHP (55 byte)

Chương trình này sử dụng nhị phân (wow, đây là lần thứ ba tôi sử dụng lại thủ thuật tương tự). 21 ký tự không phải là số, 34 ký tự số. Không có chữ cái, vì chữ cái nhàm chán.

xxd

0000000: 3c3f 3d7e b79a 9393 90df 8890 8d93 9bde  <?=~............
0000010: dede f53b 2331 3233 3435 3637 3839 3031  ...;#12345678901
0000020: 3233 3435 3637 3839 3031 3233 3435 3637  2345678901234567
0000030: 3839 3031 3233 34                        8901234

@JanDvorak: Tôi gần như chắc chắn rằng mình đã đọc "trước hoặc sau". Oh tốt, để tôi sửa nó sau đó.
Konrad Borowski

4

Toán học 55

"Hello World!!!"(34+21!)/000000000051090942171709440034

Đầu ra

Hello World!!!

4

Sclipting (34 ký tự)

丟0000000000긒괡뉆롲닷댠닶롬뉔밈0000000000併0反

Thật không may, Sclipting hoàn toàn không sử dụng bất kỳ ký tự ASCII nào, vì vậy tôi phải đệm chương trình với 21 ký tự số vô dụng :(


2

Forth hoặc Ruby, 55

(34 số + 21 không số)

Forth

." Hello world!!!" \ 3141592653589793238462643383279502

Hồng ngọc

puts"Hello world!!!"#3141592653589793238462643383279502

Sử dụng bình luận để pad cảm thấy bẩn, nhưng đó là những câu trả lời hợp lệ.


2

J (55 ký tự)

(34 số + 21 không số)

(72 101 108 108 111 32 119 111 114 108 100{a.), 3#33{a.

0

C #, 233 byte

233 ký tự
144 số
89 ký tự không số

/*I suck at CodeGolf!!!*/new List<int>{0072,00101,000108,000108,000111,0000032,00000119,00000111,0000000000114,0000000000108,00000000000000100,00000000000000033,00000000000000033,00000000000000033}.ForEach(c=>Console.Write((char)c));

Đầu ra:

Hello world!!!

0

Japt , 55 byte

"aaaaaaa1234567890123456789012345678901234"`HÁM WŽld!!!

Hãy thử trực tuyến!

Về cơ bản, đây là một thế giới xin chào đơn giản với một số rác rưởi ngay từ đầu đã bị bỏ qua nhưng làm cho mã thỏa mãn các điều kiện.


-1

Batch Windows

echo Hello World!!!::0123456789012345678901234567890123

12
Ồ Điều này rất khác với giải pháp sh của tôi.
dùng12205

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.