Mã decathlon golf đầu tiên [đóng]


48

Nhiệm vụ

Tất cả các đối thủ cạnh tranh cố gắng giải quyết danh sách 10 nhiệm vụ sau đây:

  1. Đọc một số nguyên dương n từ đầu vào và trả về tổng các khối của n số nguyên không âm đầu tiên .

    Đối với đầu vào 1, điều này sẽ trở lại 0.

  2. Đọc một số nguyên dương n từ đầu vào và trả về giá trị trung thực khi và chỉ khi nsố nguyên tố Mersenne .

  3. Đọc một danh sách không trống gồm n số nguyên từ đầu vào và trả về trung vị của chúng .

    Nếu n chẵn, sử dụng giá trị nhỏ hơn của hai giá trị trung bình.

    Ví dụ, trung vị của [1 4 3 2]2.

  4. Đọc một số nguyên (dương, âm hoặc 0) hoặc biểu diễn chuỗi trong cơ sở 10 hoặc đơn nguyên, từ đầu vào và trả về các chữ số của nó ở dạng âm , không có các số 0 đứng đầu (ngoại trừ đầu vào 0).

    Đầu ra có thể được định dạng theo bất kỳ cách thuận tiện nào (chữ số, mảng, chuỗi, v.v.).

  1. Quay trở lại pneumonoultramicroscopicsilicovolcanoconiosis.

  2. Kiểm tra ngày hiện tại và trở về Happy New Year!nếu thích hợp theo lịch Gregorian.

  3. Giả ngẫu nhiên chọn 64 điểm mã được gán duy nhất từ ​​khối Unicode CJK Unified Ideographs Extension-A (U + 3400 - U + 4DB5) và trả về chuỗi các ký tự tương ứng.

    Tất cả các chuỗi có thể nên có cùng xác suất được chọn.

  4. Đọc hai chuỗi ký tự ASCII có thể in từ đầu vào và trả về giá trị trung thực khi và chỉ khi ký tự của chuỗi thứ nhất tạo thành chuỗi con của chuỗi thứ hai.

    Ví dụ, abc, axbxcnên trả lại truthy và bac, axbxcnên trả lại falsy.

  1. Đọc một mảng số nguyên, hình chữ nhật đa chiều và một số nguyên n từ đầu vào và trả về mảng đã sửa đổi với tất cả các số nguyên nhân với n .

  1. Đọc một số nguyên n không âm từ đầu vào và trả về một chuỗi n toa xe lửa, như hình dưới đây.

    Ví dụ đầu ra cho n = 3 :

     ______   ______   ______ 
    |      | |      | |      |
     ()--() ~ ()--() ~ ()--()
    

    Đầu ra có thể được bao quanh bởi bất kỳ khoảng trắng nào miễn là nó trông giống như trong ví dụ.

Làm rõ

  • 0 không tích cực cũng không tiêu cực.

  • Khoảng trắng lưu trữ luôn được phép trong đầu ra.

  • Một số phần của đầu vào có thể được đọc theo bất kỳ thứ tự thuận tiện, nhất quán.

Quy tắc

  1. Không có câu trả lời có thể giải quyết hai nhiệm vụ khác nhau trong cùng một ngôn ngữ lập trình. 1

  2. Đối với mỗi nhiệm vụ riêng lẻ, áp dụng quy tắc tiêu chuẩn .

    Cụ thể, bạn có thể gửi các chương trình hoặc chức năng với mặc định I / O thông thường , nhưng không thể tận dụng các sơ hở này .

    Nhiệm vụ 5 về cơ bản là một thách thức , do đó, việc mã hóa đầu ra không chỉ được cho phép mà còn được mong đợi.

  3. Chỉ có một câu trả lời cho mỗi người dùng nên được đăng, chứa tối đa một giải pháp cho mỗi tác vụ.

    Vui lòng định dạng câu trả lời của bạn như trong ví dụ sau:

    ## Task 1, Python, 42 bytes
    
        <code goes here>
    
    Explanation, I/O, required Python version, etc. go here.
    
    ---
    
    ## Task 7, C, 42 bytes
    
        <code goes here>
    
    Explanation, I/O, required compiler (flags), etc. go here.
    

Chấm điểm

  1. Đối với mỗi nhiệm vụ bạn giải quyết, bạn nhận được một điểm.

    Điều này có nghĩa là bạn không phải giải quyết tất cả các nhiệm vụ để tham gia.

  2. Nếu giải pháp của bạn cho nhiệm vụ n là giải pháp ngắn nhất trong ngôn ngữ lập trình đó, bạn sẽ nhận được một điểm bổ sung.

  3. Nếu giải pháp của bạn cho tác vụ n là một trong những ngôn ngữ lập trình ngắn nhất, bạn sẽ nhận được một điểm bổ sung.

  4. Điểm thưởng sẽ chỉ được trao một lần cho mỗi kết hợp ngôn ngữ tác vụ và từng nhiệm vụ tương ứng.

    Như thường lệ, nếu hai giải pháp có cùng số byte, thời gian đăng là bộ ngắt kết nối.

    Nếu ai đó vượt qua bạn sau này, bạn sẽ mất (các) điểm thưởng mà người trả lời khác kiếm được.

  5. Bạn có thể gửi golf, thêm / xóa ngôn ngữ khỏi câu trả lời của mình hoặc trao đổi ngôn ngữ được sử dụng cho hai nhiệm vụ.

    Bất cứ khi nào ai đó chỉnh sửa câu trả lời của mình, tất cả các câu trả lời đều được giải cứu.

  6. Khi bạn thay đổi ngôn ngữ cho một nhiệm vụ, bạn sẽ mất thâm niên. 2

Câu trả lời với số điểm cao nhất sẽ thắng. 3

Bảng xếp hạng mỗi nhiệm vụ

<style>body{text-align:left!important}#answer-list{padding:10px;width:290px;float:left}#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}</style><script src=https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js></script><link rel=stylesheet href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id=answer-list><table class=answer-list><thead><tr><td>Task<td>Author<td>Language<td>Score<tbody id=answers></table></div><table style=display:none><tbody id=answer-template><tr><td>{{TASK}}<td>{{NAME}}<td>{{LANGUAGE}}<td>{{SIZE}}</table><script>function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function process(){answers.forEach(function(e){var s=e.body_markdown.split("\n").filter(function(e){return"#"==e[0]});s.forEach(function(s){var r=s.match(NUMBER_REG)[0],t=(s.match(SIZE_REG)||[0])[0],a=s.match(LANGUAGE_REG)[1],n=e.owner.display_name;entries.push({task:r,user:n,language:a,size:t})})}),entries.sort(function(e,s){var r=e.task-s.task;return r?r:e.size-s.size});for(var e=0;e<entries.length;e++){var s=jQuery("#answer-template").html();s=s.replace("{{TASK}}",entries[e].task).replace("{{NAME}}",entries[e].user).replace("{{LANGUAGE}}",entries[e].language).replace("{{SIZE}}",entries[e].size),s=jQuery(s),jQuery("#answers").append(s)}}var QUESTION_ID=52152,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:&lt;(?:s&gt;[^&]*&lt;\/s&gt;|[^&]+&gt;)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*.*?,\s*\[*([^,\]]+)/,entries=[];</script>

Bảng xếp hạng kết hợp (2015-07-30 20:00 UTC)

User / Task      1 2 3 4 5 6 7 8 9 A   TOTAL   Tie breaker (if any)

DLosc            2 2 3 2 2 2 2 3 2 2      22
Sp3000           2 2 2 2 2 3 2 2 2 2      21
Doorknob         2 2 2 2 2 2 2 2 2 2      20
mathmandan       2 2 2 2 2 2 2 2 2 2      20   Combined byte count.
MickyT           2 2 2 2 2 2 1 2 2 2      19
Alex A.          2 1 2 2 2 2 1 2 2 2      18
Jacob            2 2 2 2 2 1 0 0 0 2      13
alephalpha       2 2 2 0 2 2 0 0 2 0      12
Martin Büttner   2 0 0 2 2 0 0 2 2 2      12   Combined byte count.
kirbyfan64sos    1 2 2 0 2 X 0 2 0 3      12   Per-language wins.
Maltysen         3 0 0 0 3 2 1 X 2 0      11
plannapus        2 2 0 0 2 2 0 2 0 2      10
jimmy23013       0 0 2 3 0 0 3 2 0 0      10   Solved tasks.
Tom              0 3 0 0 2 2 0 X 3 0      10   Combined byte count.
FryAmTheEggman   1 0 2 0 2 0 2 0 2 0       9
Vioz-            1 0 2 2 2 2 0 0 0 0       9   Combined byte count.
Toby Speight     2 0 0 0 2 2 0 0 0 2       8
Ismael Miguel    0 0 0 0 2 2 0 0 0 2       6
Pulga            0 2 2 0 0 0 0 0 0 2       6   Combined byte count.
flawr            2 0 2 0 0 0 0 0 0 0       4     
manatwork        2 0 0 0 0 2 0 0 0 0       4   Combined byte count.
TheNumberOne     1 0 0 0 2 0 0 0 0 0       3

Nhiệm vụ được đánh dấu Xlà có mặt nhưng không hợp lệ.

Bảng xếp hạng kết hợp đã được xây dựng bằng tay. Xin vui lòng cho tôi biết nếu có bất kỳ lỗi.


1 Ngôn ngữ được tính là khác nhau nếu chúng không phải là phiên bản khác nhau của cùng một ngôn ngữ, vì vậy chỉ có một JavaScript, một Python và một TI-BASIC, nhưng C, C ++, Octave và MATLAB là bốn ngôn ngữ khác nhau.

2 Nếu bạn giải quyết tác vụ n bằng ngôn ngữ L theo x byte, người khác sẽ giải quyết cùng một tác vụ trong cùng ngôn ngữ với cùng số byte, bạn đổi sang ngôn ngữ M và quay lại chỉnh sửa của mình, người trả lời khác sẽ giữ điểm thưởng.

3 Số điểm kiếm được từ quy tắc chấm điểm 1, 2 và 3 (theo thứ tự đó), số byte kết hợp của tất cả các nhiệm vụ được giải quyết (thấp hơn là tốt hơn) và cuối cùng, kiểm phiếu (cao hơn là tốt hơn) đóng vai trò là người phá vỡ.


6
Để làm rõ, thách thức này chỉ giới hạn ở những người biết ít nhất 10 ngôn ngữ? Tôi đang yêu cầu ... một người bạn ...
vijrox

2
@VijayRamamurthy: Bạn không phải giải quyết tất cả các nhiệm vụ để tham gia, vì vậy nếu bạn chỉ giải quyết một nhiệm vụ, bạn chỉ cần biết một ngôn ngữ.
Alex A.

2
@JoeZ.: Chúng tôi đã có một số thách thức 9 lỗ ở đây, nhưng những mục đó đã ghi điểm bằng số lượng byte kết hợp. Không phải là việc ghi điểm của tôi theo bất kỳ cách nào liên quan đến cách ghi điểm của decathlons, nhưng tôi muốn làm rõ rằng đây là một loại thử thách khác.
Dennis

4
@lolesque: Đó sẽ là một thử thách golf tiêu chuẩn. Toàn bộ vấn đề ở đây là sử dụng một ngôn ngữ khác nhau cho mỗi nhiệm vụ.
Dennis

3
@NotthatCharles: Tôi đã hỏi Gregory và anh ấy nói ngày 1 tháng 1.
Dennis

Câu trả lời:


5

Nhiệm vụ 1, GolfScript, 8 byte

~,{+}*.*

Ý tưởng tương tự như câu trả lời CJam của Martin .


Nhiệm vụ 2, QBasic, 74 71 byte

INPUT a
r=a>1
FOR i=2 TO a-1
r=r*(a MOD i)
NEXT
?r*((a\2AND a)=a\2)

Đã thử nghiệm trên QB64 với tắt mở rộng cú pháp. 1 Phần lớn các chương trình kiểm tra xem số đã cho acó phải là số nguyên tố hay không bằng cách lấy amod mỗi số 2 <= i< avà nhân kết quả. Kết quả là r0 nếu số không phải là số nguyên tố và khác không. Dòng cuối cùng sử dụng bitwise ANDvới phép chia số nguyên cho 2 để kiểm tra xem biểu diễn nhị phân của atất cả có phải là tất cả hay không, tức alà có dạng 2 n -1. Nhân số này bằng cách rcho 0 (sai) nếu một số không phải là số nguyên tố Mersenne và một số giá trị khác không (trung thực) nếu không. ?là một phím tắt cho PRINT.

Số nguyên tố Mersenne lớn nhất mà tôi đã thử nghiệm, 8191, cho kết quả là 1.#INF- vẫn còn sự thật! (Tôi đã kiểm tra với một IFtuyên bố để đảm bảo.)

1 Điều này không thay đổi ngữ nghĩa của chương trình. Nếu bạn nhập mã ở trên vào DOS QBasic tiêu chuẩn, nó sẽ được tự động định dạng với các khoảng trắng thừa, nhưng nó sẽ chạy chính xác như vậy.


Nhiệm vụ 3, Pyth, 6 byte

ehc2SQ

Đọc một danh sách kiểu Python từ stdin. Phép thuật chính ở đây là ctoán tử hop: được cung cấp một int và một danh sách, nó chia danh sách thành n phần. Vì vậy, chọn c2SQdanh sách đầu vào được sắp xếp một nửa. Thuận tiện, khi chiều dài là số lẻ, nửa đầu là nửa lớn hơn, vì vậy trung vị luôn là yếu tố cuối cùng của nửa đầu. Đây là lần ethứ hai của hkết quả Chop.


Nhiệm vụ 4, CJam, 26 byte

ri{_2%z\_0>\-2/_3$+?}h;]W%

Điều này có thể được rút ngắn, tôi nghi ngờ.

Thuật toán:

  • Đọc số nguyên.
  • Làm trong khi giá trị không bằng 0:
    • Lấy abs (i% 2). Đây là chữ số tiếp theo (negabit?).
    • Chia i cho -2.
    • Nếu tôi không cố ý, hãy thêm abs (i% 2) vào kết quả. Điều này là để sửa một trường hợp góc: 3 chuyển thành -1, nhưng -3 nên chuyển sang 2, không phải 1.
  • Thả 0 thừa, thu thập ngăn xếp thành một mảng, đảo ngược và in.

Thực tế rằng đó là một vòng lặp do-while xử lý trường hợp 0.


Nhiệm vụ 5, Bash, 50 byte

echo pneumonoultramicroscopicsilicovolcanoconiosis

Không có nhiều để giải thích.


Nhiệm vụ 6, Python, 78 byte

from datetime import*
d=date.today()
if d.day<2>d.month:print"Happy New Year!"

Yêu cầu Python 2. Các toán tử bất đẳng thức chuỗi của Python có thể được khai thác độc đáo ở đây.


Nhiệm vụ 7, ActionScript, 82 byte

x=""
while(x.length<64){c=chr(13312+random(6582));if(x.indexOf(c)<0)x+=c}
trace(x)

ActionScript là thành viên của gia đình ECMAScript. Mã này yêu cầu ActionScript 2 - tốt hơn nhiều cho mã golf vì tôi có thể sử dụng các hàm không dùng nữa như chrthay vì phiên bản 3 String.fromCharCode!

Đầu ra là vào khung điều khiển:

Ảnh chụp màn hình Nhiệm vụ 7


Nhiệm vụ 8, Pip, 9 19 byte

Giải pháp regex không hoạt động tốt, vì vậy đây là một giải pháp có chuỗi hoạt động thay thế.

Fcab@>:o&:(b@?c)+1o

Kho lưu trữ Github cho Pip .

Lấy hai chuỗi làm đối số dòng lệnh. Khi alà một chuỗi con, xuất ra một số nguyên dương (trung thực); mặt khác, kết quả là nil (falsy), không tạo ra đầu ra.

Giải trình:

                     Cmdline args -> a,b; o = 1 (implicit)
Fca                  For each character in a:
           b@?c      Find character's index in b (nil if not found)
          (    )+1   Add 1; all possible indices except nil are now truthy
       o&:           Logical AND with o
   b@>:              Slice b to everything at index o and afterward (Python b=b[o:])
                     (If c wasn't found, b becomes nil, but we don't care at that point)
                  o  Auto-print o

Nhiệm vụ 9, Prolog (SWI), 68 byte

m(L,N,R):-L=[H|T],m(H,N,I),m(T,N,U),R=[I|U];L=[],R=[];R is L*N.

Prolog thường không hoàn toàn cạnh tranh trong môn đánh gôn, vì vậy tôi khá hài lòng với giải pháp này.

Xác định một vị từ m với các tham số đầu vào Lcho danh sách và Ncho tham số số và đầu ra R. Định nghĩa của mmột phân tách ba:

  • Nếu Lcó thể được thống nhất với [H|T], đó là một danh sách có ít nhất một mục trong đó. Gọi mđệ quy trên đầu và đuôi của danh sách đó, và đặt kết quả lại với nhau vào một danh sách mới được thống nhất với R.
  • Nếu Lcó thể được thống nhất với [], thống nhất Rvới []là tốt.
  • Mặt khác, Lđược coi là một số; L*Nđược tính toán và gán cho R.

Ví dụ chạy bằng swiplUbuntu:

dlosc@dlosc:~/golf$ swipl -qs arrayMult.prolog
?- m([1,2,3],5,R).
R = [5, 10, 15] .

?- m([[3,4],[5,6]],3,R).
R = [[9, 12], [15, 18]] .

?- m([[[1,2],[3,4]],[[5,6],[7,8]]],2,R).
R = [[[2, 4], [6, 8]], [[10, 12], [14, 16]]] .

Nhiệm vụ 10, C, 114 112 106 byte

#define F;printf("\n");for(i=0;i<c;i++)printf(
i;t(c){F" ______  ")F"|      | ")F" ()--() ~");putchar(8);}

Đã thử nghiệm với gcctrên Ubuntu. Xác định hàm tlấy tham số nguyên. Sử dụng ba forvòng để đầu ra, cô đọng rất nhiều thông qua lạm dụng macro. Sử dụng ký tự backspace để xóa một ~kết quả theo sau trong một mẫu khoảng trắng khá kỳ lạ, nhưngThe output may be surrounded by any amount of whitespace as long as it looks like in the example.

Ví dụ chạy của t(3):

dlosc@dlosc:~/golf$ ./a.out

 ______   ______   ______
|      | |      | |      |
 ()--() ~ ()--() ~ ()--() dlosc@dlosc:~/golf$

Thật không may, mã của bạn cho nhiệm vụ 8 xác định a.clà một phần sau của abc.
Dennis

@Dennis Đó bất hạnh. (Tuy nhiên, bắt tốt, cảm ơn.) Đã sửa, với chi phí 10 byte.
DLosc

17

Huzzah, đầu tiên để hoàn thành tất cả các nhiệm vụ! \ o /

Nhiệm vụ 1, Perl, 32 byte

$_=eval join"+",map$_**3,0..$_-1

+1 byte cho -pcờ. Bình luận: Perl là lạ .


Nhiệm vụ 2, CJam, 14 byte

{_mp\)2mL_i=&}

Chương trình CJam đầu tiên của tôi!


Nhiệm vụ 3, GolfScript, 8 byte

~$.,(2/=

Eval STDIN nhập, sắp xếp, lấy độ dài, giảm, chia cho hai, sau đó lấy mục của mảng được sắp xếp tại chỉ mục đó.


Nhiệm vụ 4, Python, 77 byte

def f(i,d=''):
 while i:i,r=i/-2,i%2;i+=r<0;r+=2*(r<0);d=`r`+d
 return d or 0

Cảm ơn @ mbomb007 vì đã loại bỏ 24 (!) Byte và @ Sp3000 cho 11 khác.


Nhiệm vụ 5, Java, 66 byte

String f(){return"pneumonoultramicroscopicsilicovolcanoconiosis";}

Nhàm chán. Loại bỏ một ngôn ngữ dài dòng ở đây để tiết kiệm chỗ cho các ngôn ngữ golf sau này.


Nhiệm vụ 6, Bash, 39 byte

((`date +%j`<2))&&echo Happy New Year\!

Cảm ơn @manatwork đã dạy tôi về %j, loại bỏ 10 byte trong quy trình.


Nhiệm vụ 7, JavaScript, 148 byte

a=[];Array(65).join('x').replace(/./g,function(){while(a.push(s=String.fromCharCode(13312+Math.random()*6582))&&a.indexOf(s)==s.length-1);return s})

Tạo một chuỗi gồm 64 x, sau đó thay thế tất cả chúng bằng hàm gọi lại trả về một trong số các ký tự đó nếu nó chưa có trong mảng các ký tự được sử dụng.


Nhiệm vụ 8, Rust, 130 byte

fn f(a:String,b:String)->bool{let mut c=b.chars();for x in a.chars(){match c.find(|&y|x==y){Some(_)=>(),None=>return false}};true}

Vâng, Rust rất rất tệ trong việc chơi golf.


Nhiệm vụ 9, Đà điểu, 18 byte

{:n;'`\d+`{~n*}X~}

Phiên bản 0.7.0 . Kiểm tra mảng, thực hiện thay thế regex để thay đổi số thành phiên bản nhân của chúng và sau đó lại xóa chuỗi kết quả.


Nhiệm vụ 10, Ruby, 58 byte

->n{([' ______  '*n,'|      | '*n,' ()--() ~'*n]*$/).chop}

"\n"dài hơn "{actual newline}"một ký tự, dài hơn một ký tự $/. Cảm ơn @ MartinBüttner đã loại bỏ {byte không xác định nhưng số lượng lớn} với nhiều thủ thuật ma thuật đen khác nhau.


Nhiệm vụ 6 - $(…)`…`.
thao tác

@manatwork Cảm ơn, đã chỉnh sửa.
Doorknob

Suy nghĩ lại, (sự hấp thụ caffeine trong tiến trình cộng), tại sao định dạng% D dài đó? [ `date +%j` = 001 ]Hoặc thậm chí ((`date +%j`<2)). (Giả sử GNU date, mà chắc chắn hỗ trợ “% j ngày trong năm (001..366)” định dạng.)
manatwork

@manatwork Ooh, rất đẹp. Cảm ơn một lần nữa, thêm vào để trả lời.
Doorknob

Nhiệm vụ 4 có thể được rút ngắn bằng cách sử dụng alg ((num + 0xAAAAAAAA) ^ 0xAAAAAAAA).
Jacob

15

Nhiệm vụ 1, 3var, 14 13 byte

'><k*>#aa/>sp

( Trang wiki Esolang cho 3var )

'                  R = n
 >                 A = n
  <k               B = n-1
    *              R = A*B = n(n-1)
     >             A = n(n-1)
      #aa          B = 2
         /         R = A/B = n(n-1)/2
          >s       A = (n(n-1)/2)^2
            p      Output A

Đưa đầu vào qua một điểm mã, ví dụ: không gian là 32.

Rất may, tất cả các thao tác chúng ta cần để thực hiện công thức n^2 (n-1)^2 / 4là các ký tự đơn (giảm dần, nhân và bình phương), nhưng phải mất 3 byte để đặt Bthành 2 (tăng-tăng-tăng-tăng).


Nhiệm vụ 2, Retina, 38 33 byte

^
1
^(..|.(..+)\2+|(.(..)+)\3*)$
<empty>

( Kho lưu trữ Github cho Retina )

Mỗi dòng đi trong một tệp riêng biệt, nhưng bạn có thể kiểm tra như trên với -scờ (thay thế <empty>bằng không có gì). Đầu vào phải là unary với 1s, ví dụ 11111117.

Đây là những gì mỗi thay thế regex (được chỉ định bởi một cặp dòng):

  1. Tack thêm 1 vào phía trước
  2. Thay thế bất cứ điều gì của hình thức 2, 1 + compositehoặc not power of 2không có gì.

Điều này bổ sung thêm 1vào các số nguyên tố Mersenne, trong khi mọi số khác bị xóa sạch.


Nhiệm vụ 3, vợt, 71 byte

#lang racket
(define(m x)(list-ref(sort x <)(quotient(-(length x)1)2)))

Ngôn ngữ giống như Lisp là quá dài dòng. Chạy ví dụ:

> (m `(1 3 4 2))
2

Nhiệm vụ 4,> <>, 31 byte

:?!v:2%:@-02-,
)?~\l1
!;n>l?

( Trang wiki Esolang cho> <> )

Trên đây là 28 byte và yêu cầu -vcờ trong trình thông dịch Python cho 3 byte khác , ví dụ: chạy như

$ py -3 fish.py negabinary.fish -v -137
10001011

Điều thú vị về> <> ở đây là chúng ta có thể tính toán từng chữ số một thông qua modulo và phép chia, đưa ra các chữ số theo thứ tự ngược lại, hoàn hảo để in ra một ngăn xếp.


Nhiệm vụ 5, Parenthetic, 1448 1386 byte

((()()())(()()()())((()())((()(())()))((()(())(())())((()(()))(()(())())((()(()))((())())((()()(()))((())()()()()()()()())((())()()()()()()()()()()()())))))))((()()())(()()())((()())((()(())()))((()()()())((()(()))(()(())())((())()()()()()()()()()()())))))((()(()))((()()())((())()()()()))((()()())((())()()))((()()()())((())()()()()))((()()())((())()()()()()()()()()))((()()())((())()))((()()())((())()()()))((()()())((())()()))((()()())((())()()()))((()()())((())()()()()()()()()()))((()()())((())))((()()())((())()()()()()()()()))((()()())((())()()()()()()))((()()()())((())))((()()())((())()))((()()()())((())()()()()()()()()))((()()()())((())()()))((()()())((())()()()()()()))((()()())((())()()()))((()()())((())()()()()()()()))((()()()())((())()()))((()()())((())()()()))((()()())((())()()()()))((()()()())((())()()()()()()()()))((()()()())((())()()))((()()())((())()()()()()()()))((()()()())((())()()()()()()()()))((()()())((())))((()()()())((())()()()()()()()()))((()()()())((())()()))((()()())((())()()()))((()()())((())()()()()()()()()()()))((()()())((())()()()))((()()())((())))((()()()())((())()()))((()()()())((())))((()()())((())()()))((()()())((())()()()))((()()()())((())()()))((()()())((())()()()))((()()())((())()()))((()()()())((())()()()()()()()()))((()()())((())()()()))((()()())((())()()()()()()()))((()()()())((())()()()()()()()()))((()()())((())()()()()()()())))

( Kho lưu trữ Github cho Parenthetic )

Tôi có một câu trả lời của CJam cho câu hỏi này ngắn hơn chính chuỗi, nhưng tôi không thể sử dụng nó vì vậy tôi nghĩ tôi sẽ đi theo con đường khác.

Mã tạo Python 3:

char97 = "((()()())(()()()())((()())((()(())()))((()(())(())())((()(()))(()(())())((()(()))((())())((()()(()))((())()()()()()()()())((())()()()()()()()()()()()())))))))"
char108 = "((()()())(()()())((()())((()(())()))((()()()())((()(()))(()(())())((())()()()()()()()()()()())))))"
open_str = "((()(()))"
close_str = ")"

target = "pneumonoultramicroscopicsilicovolcanoconiosis"
output = [char97, char108, open_str]

for c in target:
    if ord(c) >= 108:
        output.append("((()()())((())%s))"%("()"*(ord(c)-108)))
    else:
        output.append("((()()()())((())%s))"%("()"*(ord(c)-97)))

output.append(close_str)
print("".join(output))

Đây là mã tương tự Lisp:

(define f (lambda (n) (char (+ n 97))))
(define g (lambda (n) (f (+ n 11))))

(+
   (g 4)  // p
   (g 2)  // n
   (f 4)  // e
   ...
)

Rõ ràng việc ghi đè definebằng cách đặt tên g()()đã tiết kiệm rất nhiều byte.


Nhiệm vụ 6, CJam, 26 byte

XY]et1>>"Happy New Year!"*

Kiểm tra xem [month day]một phần của mảng thời gian cục bộ nhỏ hơn [1, 2].


Nhiệm vụ 7, Python, 73 byte

from random import*
print(*map(chr,sample(range(13312,19894),64)),sep="")

Chỉ cần thực hiện Python 3 đơn giản.


Nhiệm vụ 8, Mở đầu, 46 41 byte

?(?)#(#)?(v-(#)?)10)!
      ^      1 # (0

( Trang wiki Esolang cho khúc dạo đầu )

Tôi nghĩ rằng nó hoạt động - có lẽ nó vẫn có thể chơi được, nhưng đây là lần đầu tiên tôi chơi một chiếc golf không tầm thường ở Prelude. Định dạng đầu vào là <needle>NUL<haystack>, nơi NUL0x00. Điều này hoạt động tốt nhất với NUMERIC_OUTPUT = Truetrình thông dịch Python, vì điều đó sẽ làm cho nó xuất ra 1hoặc 0phù hợp.

Tôi đã chọn Prelude vì có hai thuộc tính làm cho nó rất hay cho nhiệm vụ này:

  • Nó dựa trên ngăn xếp, vì vậy trước tiên bạn có thể đọc trong kim, sau đó xử lý haystack một char mỗi lần, và
  • Ngăn xếp của Prelude có số 0 vô hạn ở phía dưới, vì vậy bạn không cần phải xử lý trường hợp kim hết ký tự.

Điều này thậm chí còn tốt hơn nếu Prelude có toán tử KHÔNG.

Đây là sự cố:

?(?)#    Read input up to the NUL, discarding the NUL afterwards

(#)      Move the needle to the second voice, effectively reversing the stack
 ^

?(...?)  Read haystack

  v-     Compare top needle char with haystack char by subtraction

  (#)    If equal, pop the needle char
   1 #

10)!     Output 1 if the top needle char is 0 (bottom of stack), 0 otherwise
(0

(-5 byte nhờ @ MartinBüttner)


Nhiệm vụ 9, Mathicala, 4 byte

#2#&

Một cái gì đó giống như 2 {{0, 1}, {1, 0}}được nhân lên một cách ngầm định trong Mathematica, vì vậy điều này chỉ đặt các đối số cạnh nhau.

Theo ghi nhận của @MartinButtner@alephalpha , 1##&là một câu trả lời 4 byte khác. Xem trước để giải thích.


Nhiệm vụ 10, Đường sắt, 246 237 byte

$'main'
 0/aima19-@
@------e<
         -(!!)()[ ][ ______ ]{f}[\n\]o()[ ][|      |]{f}[\n\]o()[~][ ()--() ]{f}#
$'f'                 #           #
 -(!x!)(!y!)(!!)()0g<  -(x)o()1g<  -(y)o()1s(y)(x){f}#
                     -/          -/

( Trang wiki Esolang cho Đường sắt )

Tôi không thể bỏ qua cơ hội để thực hiện một nhiệm vụ liên quan đến xe lửa trong Rail :) Khoảng trắng trông khá có thể chơi được, nhưng với việc phân nhánh chiếm ba dòng, nó sẽ mất một chút công việc để thu gọn.

Đầu vào là một số nguyên thông qua STDIN, nhưng cần phải có EOF. Phần trên cùng bên trái

 0/aima19-@
@------e<

là một vòng lặp atoi chuyển đổi đầu vào thành một số nguyên trong khi không phải EOF (được kiểm tra theo ehướng dẫn).

Hàm ftrên ba dòng cuối cùng lấy x, y, nvà xuất ra số x nlần chuỗi , được phân tách bằng y. Hàm này được đệ quy, ngiảm dần mỗi lần cho đến khi nó trở thành số không. fđược gọi là ba lần, cung cấp các chuỗi khác nhau cho mỗi hàng. Thật kỳ lạ, Rail cho phép các tên biến để trống, giúp tiết kiệm một vài byte.

Hầu hết các byte không may đến từ (!x!), nó bật lên trên cùng của ngăn xếp và gán nó cho biến x, và (x), nó đẩy xlên ngăn xếp. Điều này là cần thiết bởi vì không có toán tử trùng lặp trong Rail, vì vậy đây (!x!)(x)(x)là cách duy nhất để sao chép đỉnh của ngăn xếp.


Nếu tác vụ 2 ở dạng rs, bạn sẽ tiết kiệm được 2 byte và chỉ mất 14 byte để lấy số thay vì đơn nguyên. ;)
kirbyfan64sos

Khi tôi nhìn thấy vợt, tôi nghĩ bạn thích dấu ngoặc đơn; nhưng
cha mẹ

13

Nhiệm vụ 1, CJam, 7 byte

q~,:+_*

Tôi chỉ muốn nhận được giải pháp tối ưu (có lẽ là) cho việc này. Nó sử dụng thực tế là tổng của n khối đầu tiên là bình phương của số tam giác thứ n , chính nó là tổng của số nguyên n đầu tiên .

Kiểm tra nó ở đây.


Nhiệm vụ 4, Phân hạch, 173 88 78 69 68 byte

Kho GitHub cho phân hạch.

 /@\O/S@+>\
^{ }[<X/ @/;
,\?/@\J^X\
'M~\$ $
UK/W%@]  /
D
?\{\/
0'A Y

Chương trình phân hạch hợp lý thứ hai của tôi. :)

Các định dạng đầu vào là một chút lạ. Để hỗ trợ đầu vào tiêu cực, ký tự đầu tiên được dự kiến ​​là +hoặc -để chỉ ra dấu hiệu. Giá trị byte của ký tự thứ hai sau đó là độ lớn của đầu vào (vì Phân hạch không thể đọc số nguyên thập phân). Vì vậy, nếu bạn muốn 111bạn vượt qua nó +otrên STDIN. Và nếu bạn muốn -56bạn vượt qua nó -8. Thay thế +-bạn có thể sử dụng bất kỳ ký tự nào có mã ký tự thấp hơn hoặc cao hơn, tương ứng. Điều này có thể hữu ích để vượt qua trong một cái gì đó như -n(mà bạn echocó thể coi là một đối số) như, ví dụ , 0n.

Chúng ta hãy xem làm thế nào chúng ta có thể tìm thấy đại diện phủ định của một số dương. Chúng tôi muốn tính toán số lượng từ ít nhất đến bit đáng kể nhất (chúng tôi sẽ đẩy các bit đó lên một ngăn xếp và in tất cả chúng ở cuối để có được chúng theo đúng thứ tự). Chữ số đầu tiên sau đó chỉ là tính chẵn lẻ của số và chúng tôi chia số nguyên cho 2 để tiếp tục xử lý. Chữ số tiếp theo bây giờ âm (có giá trị -2) - nhưng cần lưu ý rằng bit này sẽ được đặt bất cứ khi nào 2 bit sẽ được đặt trong một số nhị phân bình thường. Sự khác biệt duy nhất là chúng ta cần đối chiếu -2 với các chữ số có giá trị dương cao hơn. Vì vậy, những gì chúng tôi làm là đây:

  • Chúng tôi xác định tính chẵn lẻ một lần nữa - đây là tiêu cực tiếp theo - và chia cho 2 như trước.
  • Nếu chữ số đó là a 1, chúng ta tăng số còn lại lên 1 để chống lại bit âm (sự khác biệt giữa âm và bit là một lần giá trị của bit quan trọng hơn tiếp theo).

Một sự đơn giản hóa tuyệt vời của kết quả mã từ việc nhận thấy rằng việc thêm một điều kiện ở đây tương đương với làm tròn số lên khi chia số nguyên (nếu bit bị loại bỏ là 1, chúng ta tăng kết quả chia số nguyên cho 1).

Sau đó, bit tiếp theo chỉ là một giá trị dương để chúng ta có thể xác định nó bình thường. Điều đó có nghĩa là chúng ta muốn một vòng lặp tính toán hai bit cùng một lúc, xen kẽ giữa làm tròn lên và làm tròn xuống cho số còn lại, nhưng chúng ta muốn nhập vòng lặp ở giữa để chúng ta bắt đầu làm tròn xuống.

Làm thế nào chúng ta có thể xử lý số nguyên âm? Vấn đề là Phân hạch thực sự không thể thực hiện số học tùy ý trên các số nguyên âm, bởi vì khối lượng luôn không âm. Vì vậy, người ta sẽ phải làm một cái gì đó thực sự phức tạp như làm việc với cường độ và theo dõi dấu hiệu ở một nơi khác. Tuy nhiên, đại diện phủ định của số âm có thể được tính dựa trên số dương có liên quan:

Nếu n là số âm, hãy tính đại diện phủ định của n / 2 (làm tròn lên ) và nối thêm tính chẵn lẻ của n .

Đây chính xác là bước đầu tiên của vòng lặp hai bit của chúng tôi. Vì vậy, tất cả những gì chúng ta cần làm là bắt đầu vòng lặp ở một điểm khác nếu dấu âm.

Hầu hết các khoản tiết kiệm từ 173 byte gốc đến từ những hiểu biết này cho phép tôi nén ba kiểm tra chẵn lẻ và một vòng lặp hai phần thành một vòng lặp với một kiểm tra chẵn lẻ.

Bài đăng này sẽ trở nên quá dài nếu tôi giải thích chi tiết tất cả mã, nhưng tôi sẽ chỉ ra một vài phần để đưa ra bố cục sơ bộ của luồng điều khiển và bạn có thể giải đố chi tiết với tham chiếu Phân hạch.

 /@\
^{ }[
,\?/
'
U
D
?

Bắt đầu từ D, cái này đọc một dấu hiệu vào năng lượng và cường độ vào khối lượng của một nguyên tử kết thúc ở [(bên phải). Bit ký hiệu này sẽ thay thế sau mỗi lần chuyển qua kiểm tra chẵn lẻ và sẽ xác định xem chúng tôi giữ lại làm tròn xuống hoặc làm tròn lên một nửa của đầu vào vòng lặp.

     /S@+>\
    [<X/ @/
 \  @\J^X\
 M  $ $
 K  %@]  /

Đây là vòng lặp tính toán các bit riêng lẻ và đưa một nửa chính xác vào lần lặp tiếp theo. Các SJđược sử dụng để tạo một bản sao của một nửa bên phải dựa trên bit dấu hiện tại, Xs thực hiện sao chép. Ở >góc trên bên phải tính toán bit thực tế sau đó được gửi đến ngăn xếp Kđể được lấy sau. Tôi nghĩ rằng bố cục của góc trên cùng bên phải khá tiện lợi và chắc chắn đáng để nghiên cứu chi tiết nếu bạn quan tâm đến Phân hạch.

Đây %là một công tắc cung cấp số trở lại vào vòng lặp miễn là nó lớn hơn 0.

    O


 M~\
 K/W%

 \{\/
0'A Y

Thay vào đó, khi con số về 0, nó được phản ánh xuống. Điều này bắt đầu một vòng lặp khác lấy các bit từ ngăn xếp, thêm chúng vào mã ký tự 0và in chúng với O. Chương trình chấm dứt khi ngăn xếp trống, bởi vì nguyên tử điều khiển cuối cùng sẽ bị đẩy lên ngăn xếp (và sau đó không còn nguyên tử chuyển động nào nữa).


Nhiệm vụ 5, Mở đầu, 219 179 96 byte

Trang Esolang cho khúc dạo đầu.

Trình thông dịch Stack Snippet cho Prelude.

29+129+716705-7607-05-4759+705-14129+05-18705-29+719+05-1507-19+39+449+767549+03-68(67+^+^+^++!)

Điều này bắt đầu như là một chương trình Prelude đầu ra cố định thủ công tiêu chuẩn với ba giọng nói. Sau vài cuộc trò chuyện với Sp3000, tôi quyết định thử một giọng nói. Hóa ra điều này hoạt động khá tốt, bởi vì việc sử dụng lại các chữ cái cũ dễ dàng hơn nhiều. Sau đó, Dennis đưa ra cho tôi một vài gợi ý và tôi tìm thấy phiên bản hiện tại: ý tưởng là đẩy tất cả các độ lệch từ chữ cái hlên chồng một giọng nói theo thứ tự ngược lại, và sau đó chỉ in chúng từng vòng một. hđược chọn vì không có htrong chuỗi (điều này rất quan trọng - nếu không thì phần 0bù sẽ chấm dứt vòng lặp) và vì nó giảm thiểu việc mã hóa các độ lệch theo các độ lệch hai chữ số và âm.

Mã hóa bù được tạo ra với tập lệnh CJam này .


Nhiệm vụ 8, Mathicala, 28 byte

LongestCommonSequence@##==#&

Yay cho tích hợp. (Đặt tên Mathematica là một chút kỳ lạ ở đây ... LongestCommonSubsequencetìm thấy phổ biến dài nhất chuỗi con trong khi LongestCommonSequencephát hiện phổ biến dài nhất dãy .)


Nhiệm vụ 9, J, 1 byte

*

Giống như câu trả lời của APL và K, nhưng dường như chưa có ai lấy J.


Nhiệm vụ 10, Retina, 67 60 byte

Kho GitHub cho Retina.

(.*).
 ______  $1<LF>|      | $1<LF> ()--() ~$1
+`(.{9})1
$1$1
~$
<empty>

Mỗi dòng đi trong một tệp riêng biệt và <LF>nên được thay thế bằng một ký tự dòng mới và <empty>phải là một tệp trống. Bạn cũng có thể đặt tất cả những thứ này vào một tệp và sử dụng -stùy chọn, nhưng điều đó không cho phép nhúng các ký tự dòng mới thay thế <LF>. Bạn có thể mô phỏng điều đó bằng cách làm một cái gì đó như

echo -n "111" | ./Retina -s train.ret | ./Retina -e "<LF>" -e "\n"

Như ví dụ trên cho thấy, đầu vào dự kiến ​​sẽ là đơn nguyên. Ý tưởng của mã là tạo ra ba bản sao của đầu vào đơn nguyên (trừ 1), mỗi bản sao có một bản sao của dòng tương ứng. Sau đó, chúng tôi liên tục nhân đôi chín ký tự cuối cùng trước một 1cho đến khi tất cả các 1s bị biến mất, do đó lặp lại các dòng khi cần thiết. Cuối cùng, chúng tôi loại bỏ các dấu vết bên ngoài ~.


10

Tôi đoán là tôi sẽ bắt đầu với một vài thứ. Lần đầu chơi golf.

Nhiệm vụ 1, Python, 38 21 byte

lambda n:(n*n-n)**2/4

Tổng hợp một danh sách tất cả các hình khối lên đến x. Thay đổi biểu thức nhờ xnor

Nhiệm vụ 2, TI-Basic 89, 244 byte

Func
If iPart(log(x+1)/log(2))=log(x+1)/log(2) Then
 Return log(x+1)/log(2)
Else
 Return 0
EndIf
EndFunc
Func
If isPrime(x)=false
 Return 0
If ipart(log(x+1)/log(2))=log(log(x+1)/log(2)) Then
 Return log(x+1)/log(2)
Else
 Return 0
EndIf
EndFunc

Không chắc chắn 100% về cái này, sẽ kiểm tra khi tôi tìm thấy pin mới cho máy tính của mình. isPrime là phần dựng sẵn, ipart là phần nguyên (2.3 -> 2)

Nhiệm vụ 3, Perl, 45 34 byte

@n=sort{$a-$b}@ARGV;print$n[$#n/2]

tệp perl 1 2 3 4 -> 2. Đã lưu một vài byte nhờ @nutki. In thay vì lưu vào biến sau đó in biến.

Nhiệm vụ 4, Ruby, 43 40 byte

x=2863311530
p ((gets.to_i+x)^x).to_s(2)

Ít nhất nó hoạt động trong 1.9, không biết về 1.8. Trong hệ nhị phân, '10' * 16 (hoặc 2863311530) cộng với một số, xor với 10101010 đó ... là số âm. Xuất ra một chuỗi đại diện với dấu ngoặc kép (3 -> "111" thay vì 3 -> 111). Không thể tìm thấy toán học để viết x trong ít ký tự.

Nhiệm vụ 5, Malbolge, 682 354 byte

D'``_]>n<|49ixTfR@sbq<(^J\ljY!DVf#/yb`vu)(xwpunsrk1Rngfkd*hgfe^]#a`BA]\[TxRQVOTSLpJOHlL.DhHA@d>C<`#?>7<54X8165.R2r0/(L,%k)"F&}${zy?`_uts9Zvo5slkji/glkdcb(fed]b[!B^WVUyYXQ9UNrLKPIHl/.JCBGFE>bBA@"!7[;{z276/.R2r0)(-&J$j('~D${"y?w_utyxq7Xtmlkji/gf,MLbgf_dc\"`BA]\UyYXWP8NMLpPIHGLEiIHGF(>C<A@9]7<;:3W7w5.-210/(L,%k#('~}C{"y?`_uts9wpXn4rkpoh.lNMiha'eGF\[`_^W{h

Kiểm tra trực tuyến tại đây Hãy nghĩ rằng điều này là ngắn như nó sẽ đi. Chơi golf nhiều nhất có thể. Đã lưu 300 byte, vậy whee?

Nhiệm vụ 6, bash, 62 50 40 byte

[ `date +%j`=1 ]&&echo 'Happy New Year!'

Tìm ra khoảng% j từ một bài viết khác.

Nhiệm vụ 10, Befunge-98, 121 byte

>&:>1-:" ____"v
   |,k8: '"__"<
   >a,$:>1-v
      > |
>' 8k,^ #
^|':k4 '|':<
v ',*25$<
>,:1-: ")(--)("v
^," ~"_@#,k6" "<

Thay đổi thành befunge-98. Cũ là Befunge-93, 227 157 147 byte. Fungi đã sử dụng , được viết bằng Haskell để thử nghiệm. Đã sử dụng "làm nhiều lần k" và thêm các ký tự đơn vào ngăn xếp với '. Tôi có cảm giác nó có thể bị đánh golf xuống 110 hoặc ít hơn, nhưng tôi đã dành quá nhiều thời gian cho việc này rồi ...


@Dennis vì tôi không thể hỏi bài chính, tôi sẽ hỏi ở đây. Là không gian tách biệt đầu vào ok cho nhiệm vụ 3? Nó sẽ không ở trong [].
Jacob

Bất cứ điều gì phù hợp với nhu cầu của bạn.
Dennis

1
Bạn có thể rút ngắn tổng số khối với công thứclambda n:(n*n-n)**2/4
xnor

Bạn có thể sử dụng 0=fPart(expression) rather than iPart (biểu thức) = biểu thức` trong câu trả lời TI-89 BASIC của bạn.
lirtosiast

1
Tôi nghĩ rằng đối số đó không hoạt động tốt khi nói về một cái gì đó như Python 2/3. Ví dụ: `n` hoạt động tốt hơn str (n) trong 2, nhưng không hoạt động trong 3. Tôi không thể nghĩ ra các ví dụ khác vào lúc này, tôi quan tâm nhiều hơn đến việc chơi golf mà trả lời nhiều hơn: p
Jacob

9

Điều đầu tiên: nhiệm vụ 6 về mặt kỹ thuật KHÔNG được tính; Tôi đã tải lên unc dưới một giờ trước. Tuy nhiên, tôi gần như đã tải nó vào sáng nay, nhưng đã quyết định viết một bộ thử nghiệm đầu tiên. Kẻ ngốc.

Vì vậy, dù sao, ở đây đi!

Lưu ý rằng hầu hết mọi thứ không cố ý là ngược, vì vậy &&thực sự có nghĩa ||và như vậy, đó là lý do tại sao một số hoạt động trông kỳ lạ (ví dụ: sử dụng -để tính toán khối).

Nhiệm vụ 1, Haskell, 21 byte

f n=sum$map(^3)[0..n]

Nhiệm vụ 2, Hy, 135 byte

(import math)(fn[n](and(if(and(not(% n 2))(> n 2))false(all(genexpr(% n i)[i(->> n(math.sqrt)int inc(range 3))])))(->> n dec(& n)not)))

Nhiệm vụ 3, Phi tiêu, 37 byte

Chức năng phi tiêu đầu tiên của tôi!

f(l){l.sort();return l[l.length~/2];}

Nhiệm vụ 5, INTERCAL, 1047 byte

DO ,1 <- #46
DO ,1SUB#1 <- #242
DO ,1SUB#2 <- #152
DO ,1SUB#3 <- #208
PLEASE DO ,1SUB#4 <- #248
DO ,1SUB#5 <- #248
DO ,1SUB#6 <- #192
PLEASE DO ,1SUB#7 <- #128
DO ,1SUB#8 <- #128
DO ,1SUB#9 <- #72
PLEASE DO ,1SUB#10 <- #120
DO ,1SUB#11 <- #8
DO ,1SUB#12 <- #224
PLEASE DO ,1SUB#13 <- #200
DO ,1SUB#14 <- #208
DO ,1SUB#15 <- #32
PLEASE DO ,1SUB#16 <- #208
DO ,1SUB#17 <- #120
DO ,1SUB#18 <- #88
PLEASE DO ,1SUB#19 <- #40
DO ,1SUB#20 <- #8
DO ,1SUB#21 <- #208
PLEASE DO ,1SUB#22 <- #232
DO ,1SUB#23 <- #120
DO ,1SUB#24 <- #208
PLEASE DO ,1SUB#25 <- #248
DO ,1SUB#26 <- #56
DO ,1SUB#27 <- #96
PLEASE DO ,1SUB#28 <- #160
DO ,1SUB#29 <- #208
DO ,1SUB#30 <- #208
PLEASE DO ,1SUB#31 <- #136
DO ,1SUB#32 <- #120
DO ,1SUB#33 <- #192
PLEASE DO ,1SUB#34 <- #112
DO ,1SUB#35 <- #64
DO ,1SUB#36 <- #16
PLEASE DO ,1SUB#37 <- #128
DO ,1SUB#38 <- #48
DO ,1SUB#39 <- #208
PLEASE DO ,1SUB#40 <- #128
DO ,1SUB#41 <- #224
DO ,1SUB#42 <- #160
PLEASE DO ,1SUB#43 <- #40
DO ,1SUB#44 <- #56
DO ,1SUB#45 <- #200
PLEASE DO ,1SUB#46 <- #126
PLEASE DO READ OUT ,1
DO GIVE UP

Nhiệm vụ 6, chú, 157 byte

!include>=fgQVb%U<=
!include>=gVZR%U<=
false lRNe[]<<gVZR_g t:=gVZR[5]:volatile gZ m:=-YbPNYgVZR[&t]:for[#m%gZ_Zba||m%gZ_ZQNl!=6]chgf[L'uNccl ARj LRNe#']:>>

Nhiệm vụ 8, rs, 42 byte

#
+#(.)(.*) .*?\1/\1#\2 
.*# .*$/1
[^1]+/0

Bản thử trực tiếp.

Nhiệm vụ 10, Pyth, 46 byte

jb(j*d2m+\ *\_6Qjdm"|      |"Qj\~m" ()--() "Q)

Bản thử trực tiếp.


@Dennis Rất tiếc! Đã sửa!
kirbyfan64sos

1
Chà, tôi không biết, nhưng tôi chắc chắn rằng bạn không cần một trong những thứ !includeđó. Không hoàn toàn chắc chắn cái nào mặc dù.
Dennis

@Dennis Đầu tiên bao gồm là stdio.h, thứ hai là time.h. Tôi cần cả hai.
kirbyfan64sos

Cái gì uncdùng để biên dịch mã C? GCC sẽ hoạt động tốt mà không có stdio.h. Không chắc chắn về time.h.
Dennis

@Dennis không có trình biên dịch cài đặt. Nó chỉ xuất mã C; Tôi phải tự biên dịch nó. Tuy nhiên, điều đó ý nghĩa; Tôi sẽ kiểm tra nó sau.
kirbyfan64sos

8

Nhiệm vụ 1, APL, 7 byte

+/3*⍨⍳⎕

Bạn có thể dùng thử trực tuyến bằng ngn / apl, mặc dù nó sẽ hoạt động với bất kỳ triển khai APL nào mặc định có nguồn gốc chỉ số 0.

Điều này lập phương cho mỗi số nguyên từ 0 đến đầu vào ( ⍳⎕) -1 bằng cách đi lại ( ) các đối số cho toán tử công suất ( *). Vectơ kết quả được giảm bằng cách tính tổng ( +/) và một vô hướng được trả về.


Nhiệm vụ 2, Julia, 42 byte

n->(isprime(n)&&int(log2(n+1))==log2(n+1))

Điều này tạo ra một hàm ẩn danh chấp nhận là số nguyên làm đầu vào và trả về một boolean. Để gọi nó, đặt tên cho nó, vd f=n->....

Đầu tiên chúng tôi sử dụng chức năng tích hợp của Julia isprimeđể kiểm tra xem có phải nlà số nguyên tố hay không. Nếu có, chúng tôi kiểm tra đó log2(n+1)là một số nguyên. Nếu vậy, ncó thể được viết như 2^k-1đối với một số người k, và do đó nlà một số nguyên tố Mersenne.


Nhiệm vụ 3, ELI , 19 byte

{f:x[<x][~.0.5*#x]}

Điều này tạo ra một đơn nguyên ftrả về trung vị của vectơ đầu vào.

Ungolfed + giải thích:

{f:         // Define a function f
 x[<x]      // Sort the input vector
 [          // Select the element at index...
 ~.0.5*#x   // ceiling of 0.5 * length(input)
]}

Ví dụ:

    f 1 2 3 4
2
    f ?.!20   // Apply f to 20 random integers in 1..20
4

Nhiệm vụ 4, Octave, 39 byte

@(n,x=2863311530)dec2bin(bitxor(n+x,x))

Điều này tạo ra một hàm xử lý chấp nhận một số nguyên làm đầu vào và trả về chuỗi negabinary liên quan. Để gọi nó, đặt tên cho nó, ví dụ f=@..., và chạy với feval(f, <input>).

Bạn có thể thử nó trực tuyến .


Nhiệm vụ 5, CJam, 47 byte

"pneumonoultramicroscopicsilicovolcanoconiosis"

Chuỗi được in đơn giản để STDOUT. Bạn có thể thử nó trực tuyến nếu bạn cảm thấy rất nghiêng.


Nhiệm vụ 6, Windows Batch, 46 byte

if "%date:~4,5%"=="01/01" echo Happy New Year!

Biến %date%chứa ngày hiện tại trong biểu mẫu Thu 06/25/2015. Chúng ta có thể chọn tháng và ngày bằng cách lấy chuỗi con có độ dài 5 sau khi bỏ qua 4 ký tự đầu tiên : %date:~4,5%. Từ đó, chúng tôi chỉ kiểm tra xem đó có phải là ngày 1 tháng 1 hay không và chúc mừng năm mới.


Nhiệm vụ 7, Pyth, 26 byte

=Gr13312 19895FNU64pC.(.SG

Đầu tiên chúng tôi gán Gcho phạm vi 13312 đến 19894. Sau đó, chúng tôi lặp 64 lần và tại mỗi lần lặp, chúng tôi xáo trộn G( .SG), loại bỏ và trả về phần tử cuối cùng ( .() và in biểu diễn ký tự của nó ( pC).

Bạn có thể thử nó trực tuyến .


Nhiệm vụ 8, Ruby, 36 byte

def f(a,b)!b.tr("^"+a,"")[a].nil?end

Này định nghĩa một hàm fmà chấp nhận hai chuỗi ab, nơi alà chuỗi tìm trong b.

Tất cả mọi thứ trừ các ký tự trong ađược loại bỏ khỏi bviệc sử dụng .tr()và chúng tôi kiểm tra xem kết quả có chứa achính xác sử dụng hay không []. Điều này sẽ trả về nilnếu chuỗi không được tìm thấy, vì vậy chúng ta có thể nhận được giá trị boolean bằng cách sử dụng !với .nil?.


Nhiệm vụ 9, R, 16 byte

function(x,n)n*x

Điều này tạo ra một đối tượng chức năng giấu tên chấp nhận bất kỳ loại mảng hoặc ma trận xvà một số nguyên nvà nhân lên mỗi phần tử của xbằng n. Nếu bạn thích, bạn có thể thử trực tuyến .


Nhiệm vụ 10, Python 3, 92 byte

n=int(input())
l="\n"
w=" ()--() "
print(" ______  "*n+l+"|      | "*n+l+(w+"~")*(n-1)+w)

Khá đơn giản. Bạn có thể thử nó trực tuyến .


Câu trả lời APL không phải là 7 byte, vì có ba ký tự Unicode trong phạm vi cao hơn.
Tom

6
@Tom: Mỗi câu trả lời có thể chọn mã hóa thuận tiện nhất. Trong trang mã APL , một ký tự là một byte.
Dennis

Bạn có thể dùng thử trực tuyến nếu bạn cảm thấy rất có khuynh hướng :-D
Luis Mendo

7

Nhiệm vụ 1,> <>, 10 + 3 = 13 byte

::*-:*4,n;

Chạy phần này bằng trình thông dịch Python chính thức bằng -vcờ (với chi phí là 3 byte). Điều này bình phương số lượng (n - n*n)và chia cho 4, tất nhiên là tương đương với bình phương (n*n - n)và chia cho 4.

Nhiệm vụ 2, GAP, 63 62 byte

b:=function(m)return[2]=AsSet(Factors(m+1))and IsPrime(m);end;

(Lưu một khoảng trống bằng cách viết bình đẳng theo cách khác.)

Nhiệm vụ 3, R, 43 39 byte

f=function(v)sort(v,d=T)[length(v)%/%2]

Cảm ơn Plannapus vì sự cải tiến tốt đẹp!

Nhiệm vụ 4, Piet, 155 135 115 5 * 19 = 95 codel

nhập mô tả hình ảnh ở đây

Kiểm tra bằng trình thông dịch trực tuyến này , với kích thước codel 13. Hoặc sử dụng trình thông dịch ưa thích của bạn - hãy cho tôi biết nếu bạn có một trình thông dịch bạn thích!

Làm cho nó đầu ra 0thay vì chuỗi trống cho đầu vào 0là bất tiện. Tôi đã sử dụng một if-then gần đầu để xử lý trường hợp này; sau đó là một vòng lặp while để tính các chữ số trong trường hợp khác, và cuối cùng là một vòng lặp while khác ở cuối để xuất các chữ số từ ngăn xếp.

Rất cám ơn Sp3000 vì một số bình luận rất hữu ích, đã giúp tôi lưu một số codel!

Nhiệm vụ 5, Lua, 52 byte

print"pneumonoultramicroscopicsilicovolcanoconiosis"

Bạn có thể thử nó ở đây .

Nhiệm vụ 6, LaTeX, 157 139 136 127 128 byte

\documentclass{book}\begin{document}\count1=\day\multiply\count1 by\month
\ifcase\count1\or Happy New Year!\else~\fi\end{document}

Nếu sản phẩm của ngày và tháng là 1, in thông báo; mặt khác, không có gì (Ngày đầu năm đặc biệt thuận tiện cho thiết kế này: vì đầu ra mà chúng tôi đang tìm kiếm 1, chúng tôi chỉ cần một ortuyên bố. Câu lệnh nthứ ornhất chỉ định hành vi cho giá trị n.)

Lưu ý: phiên bản trước của tôi bị thiếu dòng trả về, đó là một lỗi. (Tôi đã thử kiểm tra chức năng này, nhưng để thực sự kiểm tra nó đúng cách có thể mất một lúc ...)

Phiên bản gốc của tôi đã sử dụng calcgói, tiện lợi hơn nhiều so với phiên bản hiện tại của tôi. Một cái gì đó để ghi nhớ cho "cuộc sống thực"!

Nhiệm vụ 7, Ruby, 62 byte

for r in Array(13312..19893).sample(64)
puts [r].pack('U*')end

Nhiệm vụ 8, JavaScript, 78 byte

h=function(l,m){u=1+m.indexOf(l[0]);return(!l||u&&h(l.substr(1),m.substr(u)))}

Giải pháp đệ quy, kiểm tra xem có phải llà một chuỗi con của m. Nếu ltrống, thì !lkết quả trong truevà hàm kết thúc. (Trong trường hợp này, l[0]không được xác định, nhưng JavaScript vẫn ổn với điều đó.) Nếu không, nó sẽ tìm ví dụ đầu tiên của l[0]in m. Nếu nó không tìm thấy một, sau đó m.indexOf(l[0])dẫn đến -1và vì vậy ukết quả trong 0và chấm dứt hoạt động.

Mặt khác, nó loại bỏ mục đầu tiên lvà các umục đầu tiên mvà tiếp tục kiểm tra.

Nhiệm vụ 9, Python, 72 60 byte

def i(a,n):
 try:return[i(c,n)for c in a]
 except:return n*a

Khoan xuống mức "thấp nhất", nơi akhông còn là danh sách nữa, chỉ là số nguyên, sau đó thực hiện phép nhân.

Rất cám ơn Dennis đã tiết kiệm cho tôi 12 byte!

Nhiệm vụ 10, Groovy, 81 byte

def j(n){(' ------  '*n+'\n'+'|      | '*n+'\n'+' ()--() ~'*n).substring(0,27*n)}

Hãy thử nó ở đây . Ban đầu, tôi đã cố gắng thực hiện một cái gì đó giống như .join()phương thức của Python cho các chuỗi, nó đặt các chuỗi cùng với một "chuỗi liên kết" cụ thể (như các liên kết giữa các toa tàu). Nhưng chi phí nhiều hơn nó tiết kiệm.

Tôi hy vọng tôi đã không thực hiện bất kỳ quy ước nào cho câu trả lời chấp nhận được bằng các ngôn ngữ khác nhau này, nhưng vui lòng cho tôi biết nếu tôi có.

Cảm ơn Dennis vì một thử thách tuyệt vời!


except:return n*alưu một vài byte cho tác vụ 9. Đối với tác vụ 1, tôi sẽ đếm -vcờ là một byte.
Dennis

@Dennis Xem bài meta này . Mặc dù, bằng bài đăng meta này , bạn có thể thay thế -vcờ bằng i(mặc dù tôi nghĩ sẽ tốt nếu cả hai phiên bản được đề cập, để thử nghiệm dễ dàng hơn).
Sp3000

@Dennis, cảm ơn rất nhiều vì sự cải tiến thông minh của bạn!
mathmandan

1
3 byte là chính xác bởi bài viết meta ở trên (dấu cách -,, v). Tôi chỉ có nghĩa là bạn có tùy chọn lấy đầu vào làm điểm mã thông qua ihướng dẫn.
Sp3000

1
btw, đối với # 4, modulo âm không có gì lạ - nó chỉ thay đổi từ ngôn ngữ này sang ngôn ngữ khác (ví dụ Java thực hiện điều đó từ bộ nhớ). Một cách để xuất toàn bộ ngăn xếp có thể là giữ một cái gì đó ở dưới cùng của ngăn xếp mà bạn biết sẽ không có trong đầu ra và tiếp tục in các ký tự trong khi đó không phải là char đặc biệt. Ngoài ra, còn có PietCreator .
Sp3000

6

Nhiệm vụ 1, Pyth, 5 byte

s^R3Q

Lấy số từ stdin. Cảm ơn @Jakube đã chỉ ra những thứ vô dụng U.

Nhiệm vụ 6, javascript, 56 byte

if(Date().slice(4,10)=="Jan 01")alert("Happy New Year!")

Nhiệm vụ 7, CJam, 16 byte

6581,mr64<'㐀f+

Tạo phạm vi, xáo trộn, chọn 64 đầu tiên và thêm bản đồ giá trị bắt đầu và chuyển đổi thành ký tự. 14 ký tự, 16 byte.

Nhiệm vụ 8, Octave, 23 byte

@(x,y)intersect(x,y)==x

Xác định hàm ẩn danh.

Nhiệm vụ 5, PHP, 45 byte

pneumonoultramicroscopicsilicovolcanoconiosis

Không nén, chỉ in.

Nhiệm vụ 9, APL 1 byte

 ×

Giống như câu trả lời K.


@Dennis Tôi cũng không biết điều đó - Tôi chỉ loay hoay với linh cảm và đặt câu trả lời này cùng nhau mà không cần kiểm tra :). Bây giờ tôi sẽ thử kiểm tra một trình giả lập.
Maltysen

@Dennis oh bạn nói đúng, nó trung bình ở giữa 2, hạ nó xuống.
Maltysen

1
Bạn đang làm gì với không gian đó trong .slice(4, 10)?
LegionMammal978

@Dennis derrrp. lấy làm tiếc.
Maltysen

1
Chỉ có một tháng viết tắt kết thúc bằng "an", vì vậy bạn có thể bỏ chữ J khi kiểm tra. (Nó cũng sẽ ngắn hơn đáng kể để làm /an 01/.test(Date()).)
NinjaBearMonkey

6

Nhiệm vụ 1, R, 21 19 byte

sum((1:scan()-1)^3)

Khá đơn giản. Đầu vào từ STDIN.

Nhiệm vụ 2, Perl, 40 66 byte

$a=log(<>+1)/log(2)+1;print$a==int($a)&&(1x$a)!~/^1?$|^(11+?)\1+$/

Đã thêm trình kiểm tra số nguyên tố (Abigails reger số kiểm tra số nguyên tố)

Nhiệm vụ 3, PARI / GP, 24 22 byte

m(v)=vecsort(v)[#v\2];

Lần đầu tiên tôi chạm vào cái này. Có thể phải học thêm một chút về nó.

Nhiệm vụ 4, T-SQL, 235 byte

CREATE FUNCTION D(@ INT)RETURNS TABLE RETURN WITH R AS(SELECT @/-2+(IIF(@%-2<0,1,0))D,CAST(ABS(@%-2) AS VARCHAR(MAX))M UNION ALL SELECT D/-2+(IIF(D%-2<0,1,0)),CAST(ABS(D%-2)AS VARCHAR(MAX))+M FROM R WHERE D<>0)SELECT M FROM R WHERE D=0

Chức năng bảng nội tuyến sử dụng CTE đệ quy. Rất lớn, nhưng thú vị để làm.

Để sử dụng

SELECT * FROM D(18)
M
------
10110

Nhiệm vụ 5, GAP, 48 byte

"pneumonoultramicroscopicsilicovolcanoconiosis";

Nhiệm vụ 6, Excel, 51 48 byte

=IF(TEXT(NOW(),"md")="11","Happy New Year!","")

Cảm ơn @Bond cho 3 byte.

Nhiệm vụ 7, Python 2.6, 98 93 85 byte

from random import*
l=range(13312,19893)
shuffle(l)
print ''.join(map(unichr,l[:64]))

Đây là lần đầu tiên tôi thử làm bất cứ điều gì trong Python, vì vậy có thể tốt hơn rất nhiều. Cảm ơn @Dennis và @Jacob vì những lời khuyên tuyệt vời

Nhiệm vụ 8, TCL, 57 byte

proc m {a b} {string match [regsub -all (.) $a *\\1]* $b}

Thật xấu hổ khi loại bỏ khoảng trắng giết chết điều này

Nhiệm vụ 9, Pike, 53 byte

mixed m(array(array(int))a,int n){return(a[*])[*]*n;}

Hàm trả về mảng nhân

Nhiệm vụ 10, Powershell, 88 byte

Function t($n){Foreach($s in "  ______ "," |      |","~ ()--() "){($s*$n).Substring(1)}}

Một hàm Powershell. Tôi nghĩ rằng tôi có thể rút ngắn nó một chút, nhưng đây là lúc này.

Và cuối cùng đã hoàn thành :)


Bạn có thể lưu 4 byte vào nhiệm vụ 6 : =IF(TEXT(NOW(),"md")="11","Happy New Year!","").
Trái phiếu

@Bond Cảm ơn vì điều đó
MickyT

Tôi cũng không biết Python, nhưng l[:63]nên hoạt động và (13312,19894)ngắn hơn các hằng thập lục phân (và tổng).
Dennis

@Dennis Cảm ơn sẽ dùng thử và thay đổi
MickyT

@Dennis Tôi chọn 19893 là giá trị cao vì range(19892,0x4DB5+1)đã cho tôi[19892, 19893]
MickyT

4

Nhiệm vụ 2, J, 10 byte

1&p:*/@,#:

Chuẩn bị boolean 0 hoặc 1 nếu đầu vào là số nguyên tố đại diện nhị phân của nó, sau đó lấy sản phẩm. Hoạt động trên phiên bản hiện tại của J.


Nhiệm vụ 5, HTML, 45 byte

pneumonoultramicroscopicsilicovolcanoconiosis

Nhiệm vụ 6, cá, 53 byte

test 0101 = (date '+%d%m');and echo 'Happy New Year!'

Dựa trên câu trả lời bash.


Nhiệm vụ 8, APL, 12 byte

{(⍳⍴⍺)≡⍋⍵⍳⍺}

Đây là một biểu thức chức năng. Nó so sánh thứ tự các ký tự được tìm thấy trong chuỗi lớn hơn với những gì sẽ được mong đợi nếu chúng được sắp xếp.


Nhiệm vụ 9, K, 1 byte

*

Nên hoạt động ở mọi phiên bản. Các phép toán số học phân phối trên các mảng.


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Martin Ender

2
Mã của bạn cho nhiệm vụ 8 không hoạt động abc caxbxc.
jimmy23013

4

Nhiệm vụ 1, Ruby, 40 byte

def f n;(0..n-1).inject{|a,b|a+b**3};end

Lần đầu tiên viết bất cứ điều gì trong Ruby. Đã thử nghiệm với ruby ​​1.8.7.


Nhiệm vụ 2, R, 50 byte

n=scan();p=log(n+1,2);!p%%1&sum(!n%%2:n,!p%%2:p)<3

Tính toán p, kiểm tra xem nó có phải là số nguyên không và nếu n và p là số nguyên tố.


Nhiệm vụ 5, PostgreSQL, 54 byte

SELECT'pneumonoultramicroscopicsilicovolcanoconiosis';

Nhiệm vụ 6, Lua, 55 byte

print(os.date("%j")=="001" and "Happy New Year!" or "")

Nhiệm vụ 8, Python, 65 byte

import re;f=lambda s,S:bool(re.search(re.sub(r'(.)',r'\1.*',s),S))

Sử dụng:

>>> import re;f=lambda s,S:bool(re.search(re.sub(r'(.)',r'\1.*',s),S))
>>> f('abc','axbxcx')
True
>>> f('bac','axbxcx')
False
>>> f('abc','axdxcx')
False
>>> f('abc','abc')
True

Nhiệm vụ 10, Julia, 73 byte

f(n)=print(" ______  "^n*"\n"*"|      | "^n*"\n"*(" ()--() ~"^n)[1:9n-1])

Cảm ơn @AlexA. đã giúp rút ngắn mã này! Ví dụ về đầu ra:

julia> f(0)




julia> f(1)
 ______  
|      | 
 ()--() 

julia> f(2)
 ______   ______  
|      | |      | 
 ()--() ~ ()--() 

julia> f(3)
 ______   ______   ______  
|      | |      | |      | 
 ()--() ~ ()--() ~ ()--() 

Đối với Nhiệm vụ 2 bạn có thể sử dụnglog2
MickyT

Tôi đếm 86 byte hiện tại cho nhiệm vụ Julia của bạn 10. Nhưng bạn có thể chuyển nó thành 81 bằng cách sử dụng hàm lambda (nghĩa là thay thế f(n)=bằng n->) và thay đổi 1:(9*n-1)thành đơn giản 1:9n-1.
Alex A.

Phải tôi tính \nlà 1 byte, theo thói quen.
plannapus

Thay vì (" "*"_"^6*" ")^n, bạn có thể sử dụng " ______ "^n(tương tự cho | |phần). 70 byte : n->print(" ______ "^n*"\n"*"| | "^n*"\n"*(" ()--() ~"^n)[1:9n-1]). (Khoảng trắng giữa các thanh không hiển thị ở đây)
Alex A.

3

Nhiệm vụ 1, Haskell, 17 byte

f x=(x*(x-1)/2)^2

Nhiệm vụ 2, Mathicala, 30 byte

PrimeQ@#&&Mod[Log2[#+1],1]==0&

Nhiệm vụ 3, JavaScript, 46 byte

function(x){return x.sort()[0|(x.length-1)/2]}

Nhiệm vụ 5, MATLAB, 47 byte

'pneumonoultramicroscopicsilicovolcanoconiosis'

Nhiệm vụ 6, Ruby, 56 byte

print Time.now.to_s[5,5]=="01-01"?"Happy New Year!":""

Nhiệm vụ 7, Python, 106 byte (thụt lề \t)

from random import*
s=''
while len(s)<64:
    c=unichr(randint(0x3400,0x4DB5))
    if c not in s:
        s+=c
print s

Lưu ý rằng việc sử dụng đơn giản của list(set(s))không không làm việc ở đây vì điều này sẽ gây ra một phân bố xác suất không đồng nhất trong không gian của tất cả các chuỗi có thể do tái đặt hàng của các thành viên trong danh sách.



@Dennis re task 7: Đồng ý ở điểm 1, sẽ sửa bất cứ khi nào tôi có cơ hội. Liên quan đến REPL, có quy định nào chống lại điều đó không?
Saran

Tốt, tất cả cố định bây giờ.
Saran

Đối với 1, có lẽ bạn có thể làm gì (x*x-x)^2/4?
xnor

Khó chịu, hàm sắp xếp mặc định của JavaScript chuyển đổi số thành chuỗi khi so sánh, do đó, nó chỉ so sánh chữ số đầu tiên của mỗi số. Do đó, nó thất bại trên [2,3,10].
NinjaBearMonkey

1
Trong 7, bạn thực sự có thể đặt if c not in s:s+=ctất cả trên một dòng, lưu một vài ký tự. Cũng 0x3400có thể được thay thế bằng 13312, ngắn hơn một ký tự (và tương tự cho 0x4db5). Cuối cùng, nó sẽ không thay đổi số lượng ký tự, nhưng trong trường hợp bạn không thích thụt tab, thay vào đó bạn có thể thụt lề với một khoảng trắng.
mathmandan

3

Nhiệm vụ 1, Haskell, 15 byte

f n=(n*n-n)^2/4

Nhiệm vụ 2, Julia, 28 byte

n->(isprime(n)&&ispow2(n+1))

Nhiệm vụ 3, Octave, 30 byte

@(x)sort(x)(ceil(length(x)/2))

Nhiệm vụ 5, Yacas , 45 byte

pneumonoultramicroscopicsilicovolcanoconiosis

Nhiệm vụ 6, Mathicala, 46 byte

If[DateList[][[{2,3}]]=={1,1},Happy New Year!]

Nhiệm vụ 9, PARI / GP, 10 byte

(n,a)->n*a

3

Nhiệm vụ 3, Clip, 13 byte

gHk[tivt}l`sk

Phiên bản khác:

gHkci`v``l`sk

`vẻ như chi phí quá nhiều.

Nhiệm vụ 4, KSFTgolf, 16 byte

g:]2%:)-2/:;xgpc

Thông dịch viên ở đây. Tôi không chắc chắn những gì tôi đang làm ... Nó sẽ in phủ định và sau đó sụp đổ.

Có một lỗi trong trình thông dịch. Hoặc tôi sẽ có thể giảm xuống còn 12 byte bằng cách chuyển đổi cơ sở tích hợp (nhưng nó chỉ hoạt động với các số nguyên dương):

2*02-ba'Z=;x

Phiên bản gốc của CJam:

qi{_1&_@^-2/}h;]W%

Tôi đã thử Pip, đà điểu, Clip và Burlesque để tìm hiểu xem có một esolang với negabinary tích hợp. Không ai trong số họ làm việc. KSFTgolf được sử dụng numpy, dường như có một số hành vi kỳ lạ liên tục khi cơ sở là tiêu cực. Nhưng không dễ để làm cho nó hoạt động với các số không tích cực.

Nhiệm vụ 7, CJam, 15 byte

'䶶,DAm<>mr64<

Nhiệm vụ 8, APL, 21 byte

∨/↑{⍺∧0,2∧/∨\⍵}/⌽⍞=↓⍞

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


Lol @ "Tôi không chắc mình đang làm gì"
Alex A.

Câu hỏi không rõ ràng về điều này, nhưng ý định của tôi là mã cho tác vụ 4 sẽ xử lý đầu vào 0. Phiên bản không có chuyển đổi cơ sở tích hợp có vẻ xử lý tốt.
Dennis

@Dennis Đã sửa. Nhưng nếu tôi chọn sử dụng unary thì sao?
jimmy23013

Sử dụng một số bù cố định hoặc bổ sung 2 có thể hoạt động. Tôi cũng sẽ chấp nhận một dấu hiệu theo sau là một số unary.
Dennis

3

Nhiệm vụ 2, x86 masm, 40 byte

C7 45 FC FF FF 07 00 B9 
00 00 00 00 B8 02 00 00 
00 D3 E0 3B 45 FC 7D 03 
41 EB F1 B8 02 00 00 00
D3 E0 48 3B 45 FC 75 13

(không bao gồm tiêu đề, MessageBox, v.v. - chỉ các byte có liên quan)

include     \masm32\include\user32.inc  
includelib  \masm32\lib\user32.lib

.data
    ClassName   db "Mersenne Prime Found",0
.data?

.code
start proc
    LOCAL IsMersenne: DWORD
    mov IsMersenne, 524287 ; put number to test in this input
    mov ecx, 0
l00p:
    mov eax, 2
    shl eax, cl
    cmp eax, IsMersenne
    jge br3ak
    inc ecx
    jmp l00p
br3ak:
    mov eax,2                                                                                     
    shl eax, cl 
    dec eax
    cmp eax, IsMersenne                                                           
    jnz n0pr1me                                                              
    invoke MessageBox, 0, addr ClassName, addr ClassName, 40h
n0pr1me:
    ret
start endp
end start

Nhiệm vụ 3, C, 136 byte

#include<stdio.h> 
int C(void*A,void*B){return(*(int*)A-*(int*)B);} 
main(){int S=4;int A[]={3,1,2,4};qsort(A,S,4,C);printf("%i",A[((S&1)?S:S-1)/2]);}

Biên dịch sử dụng gcc -o Prime main.c


Nhiệm vụ 10, C ++, 478 byte

#include<stdio.h>
#include<string.h> 
#include<stdlib.h>
void D(int Z){int L=9,i,X=0;const char*A=" ______  ";const char*B="|      | ";const char* C = " ()--() ~ ";char*P=(char*)malloc(27*Z+5);for(i=0;i<Z-1;i++){if(!i){memcpy(P,A,L);X+=L;}memcpy(&P[X],A,L);X+=L;if(i==Z-2){memcpy(&P[X],"\n",1);X++;}}for(i=0;i<Z;i++){memcpy(&P[X],B,L);X+=L;if(i==Z-1){memcpy(&P[X],"\n",1);X++;}}for(i=0;i<Z;i++){memcpy(&P[X],C,L);X+=L;if(i==Z-1)P[X-1]='\0';}printf("%s\n",P);free(P);}
main(){D(15);}

Biên dịch sử dụng g++ -o Trucks main.cpp

C & C ++ có thể được rút ngắn nhưng nó sẽ thêm lỗi trình biên dịch. Không biết các quy tắc chính xác vì vậy tôi đã cố gắng để lại mã không có lỗi trình biên dịch.


3
Chào mừng đến với PPCG! Cảnh báo trình biên dịch có thể được bỏ qua một cách an toàn, miễn là trình biên dịch tạo ra một nhị phân có thể sử dụng.
Dennis

2
Trong mã golf, trình biên dịch C sẽ cảnh báo bạn rằng nó có thể được đánh gôn hơn nữa bằng cách không tạo cảnh báo.
Comitern

Bỏ qua các cảnh báo - và cảm thấy, er, miễn phí để rò rỉ nhiều bộ nhớ như bạn muốn, quá. :-)
Toby Speight

3

Nhiệm vụ 1, Python, 35 byte

lambda x:sum(_**3for _ in range(x))

Nhiệm vụ 3, CJam, 9 byte

q~$_,(2/=

Nhiệm vụ 4, JavaScript, 55 53 byte

function(n){s=0xAAAAAAAA;return((n+s)^s).toString(2)}

Nhiệm vụ 5, Pyth, 46 byte

"pneumonoultramicroscopicsilicovolcanoconiosis

Nhiệm vụ 6, C #, 65 byte

string c(){return DateTime.Now.DayOfYear<2?"Happy New Year!":"";}

2

Nhiệm vụ 1, jq, 24 byte

[range(1;.)|.*.*.]|add+0

Nhiệm vụ 6, PostgreSQL, 54 byte

select'Happy New Year!'where'001'=to_char(now(),'DDD')

2

Nhiệm vụ 1, Cjam, 7 byte

q~,:+_*

Chỉnh sửa: Chỉ cần chú ý martin đăng này trước tôi. Tôi sẽ thử thứ khác ...

Nhiệm vụ 3, Python, 30 byte

lambda l:sorted(l)[~-len(l)/2]

Con trăn 2.

Nhiệm vụ 5, ///, 45 byte

pneumonoultramicroscopicsilicovolcanoconiosis

/// sẽ chỉ lặp lại một cái gì đó mà không có bất kỳ /ký tự.

Nhiệm vụ 7, Pyth, 19 byte

s>64.SmC+13312d6582

Chương trình. Xin vui lòng cho tôi biết nếu tôi muck các toán học. Hãy thử nó ở đây

Nhiệm vụ 9, Octave, 9 byte

@(a,n)a*n

Chức năng ẩn danh xử lý. Octave tự động làm điều này với ma trận * vô hướng.


Đối với nhiệm vụ 7, nó phải là duy nhất.
Maltysen

Vâng, pyth đã .Sxáo trộn, và bạn có thể sử dụng sum thay vì jk.
Maltysen

2

Tôi không tìm thấy thời gian để thử tất cả, nhưng đây là một sự khởi đầu

Nhiệm vụ 1, dc, 8 byte

d1+*d*4/

Đầu vào và đầu ra đến đầu ngăn xếp, theo dcquy ước.

Nhiệm vụ 5, Emacs Lisp, 46 byte

'pneumonoultramicroscopicsilicovolcanoconiosis

Lạm dụng các quy tắc:

grep 'pn.*v' /usr/*/*/brit*-large

Cách tốt nhất tôi có thể quản lý bằng cách giải nén từ dạng nén là 55, trong Perl:

unpack("H45",'uïFVóÙ¤¼g°0Æö<¥le°°')=~y/0-9bdf/i-v/r

(các ký tự không thể in ở trên bị cắt xén bởi SE, nhưng vì nó không thực sự là câu trả lời của tôi, tôi không sửa nó)

Nhiệm vụ 6, SQL, 54 byte

SELECT IF(now()LIKE'%-01-0_%','Happy New Year!','Hi');

Tôi coi mười ngày đầu tiên của tháng 1 là những ngày 'thích hợp' cho lời chào này, nhưng bạn có thể điều chỉnh theo khẩu vị. Cấu now() LIKEtrúc hoạt động ngắn hơn so với trích xuất hàng năm vớiDATE_FORMAT(now(),'%j') .

Nhiệm vụ 10, sed, 58 byte

s/./ ()--() ~/g;s/.$//;h;y/()-~/___ /;p;g;y/ ()-~/|    /;G

Đầu vào trong unary.


strstrtìm kiếm cho các chuỗi con, không phải sau đó. Tôi sợ nhiệm vụ 5 là phức tạp kolmogorov, vì vậy việc tìm từ từ trong từ điển có thể là thông minh, nhưng nó không được phép.
Dennis

Cảm ơn. Tôi đã hiểu nhầm cái sau. Tôi sẽ làm một nhiệm vụ thay thế 5, nhưng nó rất nhàm chán.
Toby Speight

Có một vài giải pháp thú vị cho nhiệm vụ 5, nhưng cho đến nay vẫn chưa có ai đăng một bài ngắn .
Dennis

1

Nhiệm vụ 5, MarioGolf , 50 byte

Đây là ngôn ngữ tôi đã phát triển một thời gian.

Phiên bản hiện tại có đủ chức năng để cho phép chạy thử thách này.

Y|<pneumonoultramicroscopicsilicovolcanoconiosis|O

Bạn có thể dùng thử trực tuyến trên http://htmlpreview.github.io/?https://raw.githubusercontent.com/ismael-miguel/mariogolf/master/js/testpage.html#c:Y|<pneumonoultramicroscopicsilicovolcan

Hiện tại, việc phát triển bị dừng lại và việc thực hiện chưa hoàn thành.

Cam kết mới nhất là vào ngày 13 tháng 3 năm 2015.

Nhiệm vụ 6, PHP, 37 byte

Điều này thực sự dễ dàng, và thú vị!

<?=date(jn)==11?'Happy New Year!':'';

Nhiệm vụ 10, Javascript, 121 tạm biệt

Vâng, không chơi gôn ...

Nhưng nó làm công việc!

console.log((' ______  '.repeat(i=prompt()))+'\n'+('|      | '.repeat(i))+'\n'+(' ()--() ~'.repeat(i).replace(/~$/,'')));

Thử nó:

Mã sẽ không hiển thị tốt trong đoạn mã ngăn xếp do nó bắt đầu bằng " đầu ra. Không gian quảng cáo đã được thêm vào để bù đắp nó.

Mã ban đầu có thể được thực thi trên bảng điều khiển của Chrome mà không gặp vấn đề gì và đầu ra sẽ được mong đợi.


@Dennis Cảm ơn bạn! Tôi đã đọc sai nhiệm vụ 5. Tôi vẫn đang xem cách tôi sẽ thực hiện các nhiệm vụ khác, nhưng tôi đang có một khoảng thời gian tồi tệ.
Ismael Miguel

1
Bạn có chắc chắn về date(dM)? Ở đây, nó trả về Nhật Bản 25Jun. (ngôn ngữ được đặt thành en_US) Có thể,
Jv và Niết

@manatwork Bạn nói đúng. Đó là sai lầm của tôi. Rằng bạn đã phát hiện ra điều đó.
Ismael Miguel


1

Nhiệm vụ 1, Octave, 15 byte

@(n)(n^2-n)^2/4

EDIT: Tôi nghĩ rằng tôi đã thêm cái này nhưng có vẻ như tôi đã quên lưu: Cái này sử dụng thực tế là sum(1^3+2^3+3^3+...+n^3) = sum(1+2+3+...+n)^2 = [n*(n+1)/2]^2

Nhiệm vụ 3, Javascript, 24 byte

x=>x.sort()[x.length>>1]

1

Được rồi, hãy hoàn thành công việc dễ dàng trước:

Nhiệm vụ 5, ASP, 45 byte

pneumonoultramicroscopicsilicovolcanoconiosis

Nhiệm vụ 6, JavaScript, 46 byte

/an 01/.test(Date())&&alert("Happy New Year!")

1

Nhiệm vụ 1, VBA, 126 byte

Function f(n As Integer)
    Dim i As Integer
    For i = 0 To n - 1
        f = f + i ^ 3
        Next i
End Function

Tôi không biết làm thế nào để chơi gôn trong VBA. Tôi đã không gõ một khoảng trắng, VBA tự động chèn khoảng trắng. =f(5)trong một ô trong Excel sẽ hiển thị 100.

Nhiệm vụ 2, Octave, 32 byte

@(n)isprime(n)&~mod(log2(n+1),1)

Nhiệm vụ 5, Golfscript, 47 byte

"pneumonoultramicroscopicsilicovolcanoconiosis"

Nhiệm vụ 9, MATLAB, 9 byte

@(A,n)A*n

Chà, đó là một khởi đầu ...

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.