In chuỗi mà không chia sẻ ký tự


15

Chỉnh sửa: Được phép sử dụng lại khoảng trắng.

Nhiệm vụ của bạn là viết n chương trình (hoặc hàm hoặc phần thân của hàm mà không sử dụng tham số hoặc tên hàm) trong cùng một ngôn ngữ. Các k chương trình thứ nên sản lượng (hồng y) số k trong tiếng Anh chuẩn trong chữ thường (với một ký tự dòng mới không bắt buộc). Vì vậy, chương trình đầu tiên nên xuất ra one, chương trình thứ hai nên xuất ra two, v.v ... Đối với một số có hai phần, chúng nên được phân tách bằng dấu gạch nối như thế twenty-one.

Nhưng không có hai chương trình trong bài gửi của bạn có thể chia sẻ các ký tự không phải khoảng trắng hoặc ký tự khoảng trắng thực hiện các công việc hữu ích. Ví dụ, nếu chương trình đầu tiên của bạn chỉ là "one", thì không có " o necó thể được sử dụng lại trong các chương trình khác của bạn.

Bạn có thể sử dụng các ký tự khoảng trắng (dấu cách, dòng mới và tab) trong hai hoặc nhiều chương trình, nếu chúng chỉ đóng vai trò là dấu phân cách hoặc thụt lề và không tự làm bất cứ điều gì. Vì vậy, bạn không thể sử dụng lại chúng trong ngôn ngữ Whitespace và bạn không thể sử dụng chúng trong các chuỗi trong nhiều chương trình.

Bạn chỉ có thể sử dụng các ký tự, tab và dòng mới ASCII có thể in được (bao gồm CR và LF). Mỗi chương trình phải chứa ít nhất 1 ký tự.

Điểm của bạn là tổng của 1 / kích thước chương trình ^ 1.5. Điểm số cao nhất chiến thắng. Bạn có thể sử dụng Stack Snippet này ( hoặc mã CJam này ) để tính điểm của bạn:

function updatescore(a){var l=a.value.split("\n"),s=0;for(var i=0;i<l.length;i++){var t=l[i].length;t-=t&&l[i][t-1]=="\r";if(t)s+=Math.pow(t,-1.5);}document.getElementById('result').textContent=s;}
<textarea id="input" placeholder="Put your code here, one per line." style="width:100%;height:150px;box-sizing:border-box" oninput="updatescore(this)" onpropertychange="updatescore(this)"></textarea><div>Your score: <span id="result">0</span></div>


Một quy tắc tính điểm tốt hơn có thể là tổng 1 / (kích thước chương trình + c) ^ 1,5, trong đó c là hằng số. Nhưng tôi nghĩ có lẽ đã quá muộn để thay đổi nó.
jimmy23013

Chúng ta có thể thêm một số nhân để có được số hồng y cao hơn không, vì đó dường như là mục tiêu? Tôi đã lên mười hai, cao hơn tất cả những người khác, nhưng vẫn thua.
mbomb007

@ mbomb007 Xin lỗi vì đã cố tình làm Headsecks điểm thấp hơn. Nhưng nếu Headsecks chỉ có điểm số tương tự với những người khác, tôi đoán Glypho sẽ giành được quá nhiều (không nói Lenguage).
jimmy23013

Tôi muốn làm điều này trong khoảng trắng :(
YoYoYonnY

1
@ mbomb007 Nếu tôi hỏi lại một câu hỏi tương tự, có lẽ tôi sẽ thêm một hằng số nhỏ vào kích thước chương trình trong điểm số. Nhưng nó quá tùy tiện để thay đổi trong câu hỏi này.
jimmy23013

Câu trả lời:


6

GS2 , ,38669200758867045

Xóa khoảng trắng khỏi tất cả các chương trình này, nhưng ba , nó chỉ dành cho khả năng đọc (ho) . mộtsáu là các chương trình gs2 bị sập (bằng cách tràn vào ngăn xếp), điều này thuận tiện làm cho chúng hoạt động .

một (3 byte)

one

hai (1384 byte)

A?"A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000A?"A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"00000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000A?"A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000

ba (92 byte)

0a 21 2c 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 2f 20 0a 21 28 3c 0a 21 2c 21 20 21 20
21 20 21 20 2f 20 0a 21 28 3c 45 21 20 21 20 21
2f 20 0a 21 28 3c 0a 21 2c 21 20 2f 20 0a 21 28
3c 0a 21 2c 21 20 2f 20 0a 21 28 3c

Rất nhiều khoảng trắng đáng kể vì vậy đây là một bãi chứa hex. Nó có một ký tự nguồn cấp đơn khi bắt đầu:


!,! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / 
!(<
!,! ! ! ! / 
!(<E! ! !/ 
!(<
!,! / 
!(<
!,! / 
!(<

bốn (276 byte)

f$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f
$f$31f$f$31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31Mf$f$f$31f$f$31f
$f$31f$f$31f$f$31f$f$31f$f$31f$f$31M

năm (178 byte)

hd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&
&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&K

sáu (3 byte)

six

Tôi không thấy yêu cầu đó - Tôi sẽ thực hiện và sửa các giải pháp trung gian.
Lynn

Tôi có thể sử dụng 20thông qua 7E, 09(tab), 0A(LF) và 0D(CR), phải không?
Lynn

Đúng. Chỉnh sửa để cho phép CR rõ ràng.
jimmy23013

Các 1trong năm là một lỗi đánh máy; Tôi đã đi và loại bỏ nó. Bây giờ tôi sẽ sửa ba cái .
Lynn

2
Các chương trình mộtsáu về cơ bản là các lỗi cú pháp kết xuất mã nguồn thành STDOUT và hiển thị lỗi trên STDERR. Đồng thuận có vẻ như điều này là ổn (vì vậy, nhưng bạn nên đề cập đến nó trong câu trả lời của bạn.
Dennis

13

CJam, 0,24075

Chương trình

BA1]100cf|
"two"
{hree}`W<7a.-
N)92+_9+_6+_2~+
S(84^I^U$F^X$G^Y$(
's'i'x

Cảm ơn @ user23013 vì gợi ý của anh ấy để sử dụng 'cho sáu .

Đầu ra, độ dài, điểm số, ký tự được sử dụng

one    10  0.03162          01       AB         ]    c f         |  
two     5  0.08944  "                                     o  tw     
three  13  0.02133        -.     7  <        W     `a e h  r    { } 
four   15  0.01721      )+    2 6  9      N       _                ~
five   18  0.01309   $ (       4  8    FGI SU XY ^                  
six     6  0.06804    '                                  i  s  x

Tự kiểm tra kết quả trong trình thông dịch của CJam .


6

Mất ngủ , 0.100688383057110116

Chỉ để bắt đầu mọi thứ. Rất khó có khả năng điều này sẽ chiến thắng. Theo sơ đồ tính điểm hiện tại, bất kỳ ngôn ngữ nào có thể in onetừ 5 ký tự trở xuống đều có lợi thế vượt trội.

một (8 byte, 0,04419417382415922)

uuyp>~p~

hai (9 byte, 0,037037037037037035)

oeoojdoLj

ba (21 byte, 0,010391328106475828)

*FFFFF
=
=z"
n=nnFzzB

bốn (23 byte, 0,009065844089438033)

)HGGGkGGGtGkGk<GGh$HGGt

4

Thủ phạm , 0,044623631135793776

Tạo ở đây

Ngôn ngữ này là một sự thay thế BF đơn giản trong đó điều duy nhất quan trọng là giá trị ký tự modulo 8.

Thật không may, các chương trình dài hơn cho điểm kém hơn, mặc dù có thể đạt đến mười hai ! (Tôi có thể tăng cao hơn nếu tôi có thể sử dụng ASCII và Unicode không in được.)

một

##%%%%%%%&##$%&#&%&%%%%%%%%%&

hai

--------+--.+++,-..+++.--------.

số ba

5555555535563334566555555555555633333333336555555555555566

bốn

==;=====>;<=>>;;;;;;;;;>;;;;;;>===>

số năm

EECEEEEEFCDEFFCCCFCEFCCCCCCDEFFCCEFCCCDEFF

sáu

KKMMMMMMMMMNKKLMNKNMMMMMMMMMMNMKMMMNKLMNN

bảy

SSUUUUUUUUUVSSTUVSVSSSSSUVSSSTUVVSUUUVSTUVUVSSUVSSSTUVVSSSSSSSSSV

tám

]][]]]]]^[\]^]^[[[[^]]^[^[[[[[[[[[[[[^

chín

cceeeeeeefccdeffeeeeefcccccfeeeeeeeeef

mười

mmmmmmmmkmmnkkklmnnkkkkmnkkklmnnkkkkkkkkkn

mười một

uusuuuuuvstuvuvsssssssvuuuuuuuvsuuuvstuvuvssuvssstuvvsssssssssv

mười hai

}}}}}}}}{}}~{{{|}~~{{{~{}~{{{|}~~{{{{{{{~{{{{{{{{{{~{{}~{{{|}~~

Bạn chỉ có thể sử dụng các ký tự, tab và dòng mới ASCII có thể in được.
jimmy23013

@ user23013 Tôi đã làm hết sức có thể và tôi đã lên 12.
mbomb007

2

/// , 0.19245008972987526

one

Câu trả lời này được lấy cảm hứng từ câu trả lời của @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳, trong đó ông nói

Theo sơ đồ tính điểm hiện tại, bất kỳ ngôn ngữ nào có thể in onetừ 5 ký tự trở xuống đều có lợi thế vượt trội.


OK, thuật toán chấm điểm dường như có một lỗ hổng. Chơi tốt
Dennis

Vâng, câu hỏi này được sandbox quá lâu chỉ để có được một phương pháp cho điểm tốt hơn. Và nó vẫn không hoạt động tốt ... Điều này cũng hoạt động trong PHP, ASP, v.v.
jimmy23013

0

SmileBASIC, .10062

"một"

?"one

"hai"

PRINT MID$(@two,1,3)

Câu trả lời khác của tôi thú vị hơn, nhưng câu trả lời này được điểm cao hơn.

Một chiến lược quan trọng để có được chuỗi dài nhất là sử dụng các ký tự THÊM để lưu vào các ký tự ĐỘC ĐÁO (ví dụ: sử dụng x - -xtrong chương trình 2 để lưu y + ycho chương trình 3)

Vấn đề với hệ thống tính điểm là nó ghi được 2 chương trình ngắn tốt hơn 3 chương trình dài, vì vậy không có lý do gì để lưu ký tự cho các chương trình sau nếu nó làm cho chương trình hiện tại dài hơn.

Ngoài ra, nó đánh giá các chương trình ngắn riêng lẻ cao hơn kích thước TOTAL nhỏ hơn. Nếu tôi trao đổi ?PRINT trong câu trả lời của mình, tôi có thể lưu 1 ký tự, nhưng điểm của tôi là HALF càng nhiều.

Tôi nghĩ sẽ tốt hơn nếu chỉ dựa vào số lượng chương trình, với tổng kích thước là một bộ phận bẻ khóa.


3
Tôi nghĩ cả hai chương trình đang chia sẻ một o...
JayCe
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.