Dekathlon golf kode pertama [tertutup]

48

Tugas

Semua pesaing mencoba menyelesaikan daftar 10 tugas berikut:

  1. Baca bilangan bulat positif n dari input dan kembalikan jumlah kubus dari bilangan bulat n pertama yang negatif.

    Untuk input 1, ini harus kembali 0.

  2. Baca bilangan bulat positif n dari input dan mengembalikan nilai truthy jika dan hanya jika n adalah prima Mersenne .

  3. Baca daftar n bilangan bulat yang tidak kosong dari input dan kembalikan median mereka .

    Jika n adalah genap, gunakan nilai tengah yang lebih rendah dari dua.

    Sebagai contoh, rata-rata [1 4 3 2]adalah 2.

  4. Baca bilangan bulat (positif, negatif atau 0), atau representasi string di basis 10 atau unary, dari input dan kembalikan digitnya dalam negabinary , tanpa memimpin nol (dengan pengecualian input 0).

    Output dapat diformat dengan cara apa pun yang nyaman (digit, array, string, dll.).

  1. Kembali pneumonoultramicroscopicsilicovolcanoconiosis.

  2. Periksa tanggal saat ini dan kembali Happy New Year!jika perlu sesuai dengan kalender Gregorian.

  3. Pseudo-pilih secara acak 64 poin kode unik yang ditugaskan dari blok Unicode CJK Unified Ideographs Extension-A (U + 3400 - U + 4DB5) dan mengembalikan string karakter yang sesuai.

    Semua string yang mungkin harus memiliki probabilitas yang sama untuk dipilih.

  4. Baca dua string karakter ASCII yang dapat dicetak dari input dan kembalikan nilai sebenarnya jika dan hanya jika karakter dari string pertama membentuk urutan selanjutnya dari string kedua.

    Misalnya, abc, axbxcharus kembali truthy dan bac, axbxcharus kembali falsy.

  1. Baca multidimensi, array persegi panjang bilangan bulat dan bilangan bulat n dari input dan kembalikan array yang dimodifikasi dengan semua bilangan bulat dikalikan dengan n .

  1. Baca bilangan bulat n -negatif dari input dan kembalikan rantai n gerbong kereta, seperti yang ditunjukkan di bawah ini.

    Contoh output untuk n = 3 :

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

    Outputnya dapat dikelilingi oleh jumlah spasi putih apa pun asalkan terlihat dalam contoh.

Klarifikasi

  • 0 tidak positif maupun negatif.

  • Trailing whitespace selalu diizinkan dalam output.

  • Beberapa masukan dapat dibaca dalam urutan yang konsisten dan nyaman.

Aturan

  1. Tidak ada jawaban yang dapat menyelesaikan dua tugas berbeda dalam bahasa pemrograman yang sama. 1

  2. Untuk setiap tugas individu, aturan standar berlaku.

    Secara khusus, Anda dapat mengirimkan program atau fungsi dengan standar I / O yang biasa , tetapi tidak dapat memanfaatkan celah ini .

    Tugas 5 pada dasarnya adalah tantangan , sehingga hardcoding output tidak hanya diizinkan tetapi diharapkan.

  3. Hanya satu jawaban per pengguna yang harus diposting, berisi paling banyak satu solusi untuk setiap tugas.

    Harap format jawaban Anda seperti pada contoh berikut:

    ## 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.
    

Mencetak gol

  1. Untuk setiap tugas yang Anda selesaikan, Anda mendapatkan satu poin.

    Ini berarti Anda tidak harus menyelesaikan semua tugas untuk berpartisipasi.

  2. Jika solusi Anda untuk tugas n adalah yang terpendek dalam bahasa pemrograman itu, Anda mendapatkan poin tambahan.

  3. Jika solusi Anda untuk tugas n adalah yang terpendek dari semua bahasa pemrograman, Anda mendapatkan poin tambahan.

  4. Poin bonus akan diberikan hanya satu kali untuk masing-masing kombinasi bahasa tugas dan masing-masing tugas.

    Seperti biasa, jika dua solusi memiliki jumlah byte yang sama, waktu posting adalah tie breaker.

    Jika seseorang kemudian mengalahkan Anda, Anda kehilangan poin bonus yang diperoleh penjawab lainnya.

  5. Anda dapat mengirim golf, menambah / menghapus bahasa dari jawaban Anda atau menukar bahasa yang digunakan untuk dua tugas.

    Setiap kali seseorang mengedit jawabannya, semua jawaban disimpan kembali.

  6. Setelah Anda mengubah bahasa untuk suatu tugas, Anda kehilangan senioritas. 2

Jawaban dengan skor tertinggi menang. 3

Papan peringkat per tugas

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

Papan peringkat gabungan (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

Tugas yang ditandai Xada tetapi tidak valid.

Papan peringkat gabungan telah dibangun dengan tangan. Tolong beritahu saya jika ada kesalahan.


1 Bahasa dianggap berbeda jika bukan versi yang berbeda dari bahasa yang sama, jadi hanya ada satu JavaScript, satu Python, dan satu TI-BASIC, tetapi C, C ++, Octave, dan MATLAB adalah empat bahasa yang berbeda.

2 Jika Anda menyelesaikan tugas dan menggunakan bahasa L dalam x byte, orang lain menyelesaikan tugas yang sama dalam bahasa yang sama dengan jumlah byte yang sama, Anda mengubah ke bahasa M dan memutar kembali hasil edit Anda, penjawab lainnya akan menyimpan poin bonus.

3 Jumlah poin yang diperoleh dari aturan pemberian skor 1, 2 dan 3 (dalam urutan itu), jumlah byte gabungan dari semua tugas yang diselesaikan (lebih rendah lebih baik) dan, akhirnya, penghitungan suara (lebih tinggi lebih baik) berfungsi sebagai tiebreak.

Dennis
sumber
6
Untuk memperjelas, tantangan ini terbatas pada mereka yang tahu setidaknya 10 bahasa? Saya meminta ... seorang teman ...
vijrox
2
@VijayRamamurthy: Anda tidak harus menyelesaikan semua tugas untuk berpartisipasi, jadi jika Anda hanya menyelesaikan satu tugas, Anda hanya perlu tahu satu bahasa.
Alex A.
2
@ Joz .: Kami memiliki beberapa tantangan 9-lubang di sini, tetapi mereka mencetak entri dengan jumlah gabungan byte. Bukan berarti penilaian saya terkait dengan bagaimana decathlon dinilai, tetapi saya ingin menjelaskan bahwa ini adalah jenis tantangan yang berbeda.
Dennis
4
@ Lolesque: Itu akan menjadi tantangan kode golf standar. Intinya di sini adalah menggunakan bahasa yang berbeda untuk setiap tugas.
Dennis
3
@NotthatCharles: Saya bertanya kepada Gregory dan dia berkata 1 Januari.
Dennis

Jawaban:

5

Tugas 1, GolfScript, 8 byte

~,{+}*.*

Ide yang sama dengan jawaban CJam dari Martin .


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

Diuji pada QB64 dengan ekspansi sintaks dimatikan. 1 Sebagian besar program menguji apakah angka yang diberikan aadalah prima dengan mengambil amod setiap angka 2 <= i< adan mengalikan hasilnya. Hasilnya adalah r0 jika angkanya tidak prima, dan bukan nol sebaliknya. Baris terakhir menggunakan bitwise ANDdengan pembagian integer oleh 2 untuk memeriksa apakah representasi biner aadalah semua, yaitu adari bentuk 2 n -1. Mengalikan ini dengan rmemberikan 0 (false) jika suatu bilangan bukan merupakan Mersenne prime dan beberapa nilai bukan nol (kebenaran) sebaliknya. ?adalah jalan pintas untuk PRINT.

Perdana Mersenne I yang terbesar, 8191, memberikan hasil 1.#INF--yang masih benar! (Saya memeriksa IFpernyataan untuk memastikan.)

1 Ini tidak mengubah semantik program. Jika Anda mengetikkan kode di atas ke dalam DOS QBasic standar, kode itu akan di-autoforming dengan spasi tambahan, tetapi akan berjalan persis sama.


Tugas 3, Pyth, 6 byte

ehc2SQ

Membaca daftar gaya-Python dari stdin. Keajaiban utama di sini adalah coperator hop: diberi int dan daftar, itu membagi daftar menjadi n bagian. Jadi c2SQpotong daftar input yang diurutkan menjadi dua. Mudahnya, ketika panjangnya ganjil, babak pertama adalah yang lebih besar, jadi median selalu merupakan elemen terakhir dari babak pertama. Ini adalah yang epertama hdari hasil chop.


Tugas 4, CJam, 26 byte

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

Saya kira ini bisa dipersingkat.

Algoritma:

  • Baca bilangan bulat.
  • Lakukan sementara nilai bukan 0:
    • Ambil abs (i% 2). Ini adalah digit berikutnya (negabit?).
    • Bagi saya dengan -2.
    • Jika saya tidak positif, tambahkan abs (i% 2) ke hasilnya. Ini untuk memperbaiki kasus sudut: 3 menuju -1, tetapi -3 harus pergi ke 2, bukan 1.
  • Jatuhkan 0 yang berlebihan, kumpulkan tumpukan ke dalam array, balikkan dan cetak.

Fakta bahwa itu adalah do-while loop menangani 0 case.


Tugas 5, Bash, 50 byte

echo pneumonoultramicroscopicsilicovolcanoconiosis

Tidak banyak yang bisa dijelaskan.


Tugas 6, Python, 78 byte

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

Membutuhkan Python 2. Operator ketidakmerataan rantai Python dapat dieksploitasi dengan baik di sini.


Tugas 7, ActionScript, 82 byte

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

ActionScript adalah anggota keluarga ECMAScript. Kode ini membutuhkan ActionScript 2 - jauh lebih baik untuk kode golf karena saya bisa menggunakan fungsi yang sudah usang seperti chrbukan versi 3 String.fromCharCode!

Output ke panel konsol:

Task 7 screenshot


Tugas 8, Pip, 9 19 byte

Solusi regex tidak cukup berfungsi, jadi inilah yang menggunakan operasi string.

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

Repositori Github untuk Pip .

Mengambil dua string sebagai argumen baris perintah. Kapan aberikutnya, menghasilkan bilangan bulat positif (kebenaran); jika tidak, hasilnya adalah nil (falsy), yang tidak menghasilkan output.

Penjelasan:

                     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

Tugas 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 biasanya tidak kompetitif di kode golf, jadi saya cukup senang dengan solusi ini.

Menentukan predikat m dengan parameter input Luntuk daftar dan Nuntuk parameter jumlah dan output R. Definisi mdisjunction tiga:

  • Jika Lbisa disatukan dengan [H|T], itu adalah daftar dengan setidaknya satu item di dalamnya. Panggil msecara rekursif di kepala dan ekor daftar itu, dan menempatkan hasilnya bersama lagi ke dalam daftar baru yang disatukan denganR .
  • Jika Ldapat disatukan dengan [], menyatukan Rdengan []juga.
  • Kalau tidak, Ldiasumsikan nomor; L*Ndihitung dan ditugaskan R.

Contoh dijalankan menggunakan swipldi Ubuntu:

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]]] .

Tugas 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);}

Diuji dengan gccdi Ubuntu. Menentukan fungsi tyang mengambil argumen integer. Menggunakan tiga forloop untuk output, sangat padat melalui penyalahgunaan makro. Menggunakan karakter backspace untuk menghapus ~hasil jejak dalam pola spasi putih agak aneh, tetapiThe output may be surrounded by any amount of whitespace as long as it looks like in the example.

Contoh menjalankan t(3):

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

 ______   ______   ______
|      | |      | |      |
 ()--() ~ ()--() ~ ()--() dlosc@dlosc:~/golf$
DLosc
sumber
Sayangnya, kode Anda untuk tugas 8 mengidentifikasi a.csebagai kelanjutan dari abc.
Dennis
@ Dennis Itu sangat disayangkan. (Tangkapan yang bagus, terima kasih.) Tetap, dengan biaya 10 byte.
DLosc
17

Huzzah, pertama untuk menyelesaikan semua tugas! \Hai/

Tugas 1, Perl, 32 byte

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

+1 byte untuk -pbendera. Komentar: Perl aneh .


Tugas 2, CJam, 14 byte

{_mp\)2mL_i=&}

Program CJam pertama saya!


Tugas 3, GolfScript, 8 byte

~$.,(2/=

Input STDIN yang valid, urutkan, ambil panjang, kurangi, bagi dua, lalu ambil item array yang diurutkan pada indeks itu.


Tugas 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

Terima kasih kepada @ mbomb007 untuk mengurangi 24 (!) Byte, dan @ Sp3000 untuk 11 lainnya.


Tugas 5, Java, 66 byte

String f(){return"pneumonoultramicroscopicsilicovolcanoconiosis";}

Membosankan. Matikan bahasa verbose di sini untuk menghemat ruang bagi bahasa yang lebih golf.


Tugas 6, Bash, 39 byte

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

Terima kasih kepada @manatwork karena mengajari saya tentang %j, memotong 10 byte dalam proses.


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

Hasilkan string 64 x's, lalu ganti semuanya dengan fungsi callback yang mengembalikan salah satu karakter tersebut secara acak jika belum ada dalam array karakter yang digunakan.


Tugas 8, Karat, 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}

Ya, Rust sangat buruk dalam bermain golf.


Tugas 9, Burung Unta, 18 byte

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

Versi 0.7.0 . Memeriksa array, apakah regex ganti untuk mengubah angka ke versi yang dikalikan, dan kemudian mengevaluasi string yang dihasilkan lagi.


Tugas 10, Ruby, 58 byte

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

"\n"adalah satu karakter lebih panjang dari "{actual newline}", yang satu karakter lebih panjang dari $/. Terima kasih kepada @ MartinBüttner karena mencukur byte {tak tentu tetapi besar} dengan berbagai trik ilmu hitam.

Gagang pintu
sumber
Tugas 6 - $(…)`…`.
manatwork
@manatwork Terima kasih, diedit.
Gagang Pintu
Berpikir lagi, (penyerapan kafein sedang berlangsung ...), mengapa format% D yang panjang itu? [ `date +%j` = 001 ]Atau bahkan ((`date +%j`<2)). (Dengan asumsi GNU date, yang tentu saja mendukung format “% j day of year (001..366)”.)
manatwork
@manatwork Ooh, sangat bagus. Terima kasih lagi, ditambahkan untuk menjawab.
Gagang Pintu
Tugas 4 dapat disingkat menggunakan ((num + 0xAAAAAAAA) ^ 0xAAAAAAAAA) alg.
Yakub
15

Tugas 1, 3var, 14 13 byte

'><k*>#aa/>sp

( Esolang halaman wiki untuk 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

Mengambil input melalui titik kode, mis. Ruangnya 32.

Untungnya semua operasi yang kita butuhkan untuk mengimplementasikan formula n^2 (n-1)^2 / 4adalah karakter tunggal (decrementing, multiplication, dan squaring), namun dibutuhkan 3 byte untuk mengatur Bke 2 (reset-increment-increment).


Tugas 2, Retina, 38 33 byte

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

( Github repositori untuk Retina )

Setiap baris masuk dalam file yang terpisah, tetapi Anda dapat menguji di atas sebagaimana dengan -sbendera (mengganti <empty>dengan apa-apa). Input harus unary dengan 1s, misalnya 1111111untuk 7.

Inilah yang dilakukan oleh setiap substitusi regex (ditentukan oleh sepasang garis):

  1. Siapkan tambahan 1 ke depan
  2. Ganti apa pun dari formulir 2, 1 + compositeatau not power of 2tanpa apa-apa.

Ini menambahkan ekstra 1untuk bilangan prima Mersenne, sementara setiap nomor lainnya dilenyapkan.


Tugas 3, Racket, 71 byte

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

Bahasa-bahasa yang seperti gangguan terlalu bertele-tele. Contoh dijalankan:

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

Tugas 4,> <>, 31 byte

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

( Halaman wiki Esolang untuk> <> )

Di atas adalah 28 byte, dan membutuhkan -vbendera di Python interpreter untuk 3 byte lainnya , misalnya dijalankan seperti

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

Yang menyenangkan tentang> <> di sini adalah bahwa kita dapat menghitung angka satu per satu melalui modulo dan divisi, yang memberikan angka dalam urutan terbalik, sempurna untuk mencetak dari tumpukan.


Tugas 5, Parentetik, 1448 1386 byte

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

( Repositori Github untuk Parenthetic )

Saya punya jawaban CJam untuk ini yang lebih pendek dari string itu sendiri, tetapi saya tidak bisa menggunakannya jadi saya pikir saya akan pergi ke arah lain.

Python 3 menghasilkan kode:

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

Inilah kode mirip Lisp yang sesuai:

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

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

Rupanya itu baik-baik saja untuk override definedengan menyebutkan gsebagai ()(), yang menyelamatkan banyak byte.


Tugas 6, CJam, 26 byte

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

Pastikan [month day]bagian array waktu lokal kurang dari [1, 2].


Tugas 7, Python, 73 byte

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

Hanya implementasi Python 3 yang mudah.


Tugas 8, Prelude, 46 41 byte

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

( Esolang halaman wiki untuk Pendahuluan )

Saya pikir ini bekerja - mungkin masih golf, tapi ini pertama kalinya saya melakukan golf non-sepele di Prelude. Format inputnya adalah <needle>NUL<haystack>, where NULis 0x00. Ini bekerja paling baik dengan NUMERIC_OUTPUT = Trueinterpreter Python, karena itu akan membuatnya output 1atau 0sesuai.

Saya memilih Prelude karena ada dua properti yang membuatnya sangat bagus untuk tugas ini:

  • Ini berbasis tumpukan, jadi Anda dapat membaca terlebih dahulu di jarum, lalu memproses tumpukan jerami satu arang pada suatu waktu, dan
  • Tumpukan Prelude memiliki angka 0 tak terbatas di bagian bawah, jadi Anda tidak perlu menangani kasing di mana jarum kehabisan karakter.

Ini akan lebih baik jika Prelude memiliki operator BUKAN.

Berikut rinciannya:

?(?)#    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 terima kasih kepada @ MartinBüttner)


Tugas 9, Mathematica, 4 byte

#2#&

Sesuatu seperti 2 {{0, 1}, {1, 0}}adalah perkalian implisit dalam Mathematica, jadi ini hanya menempatkan argumen berdampingan.

Seperti dicatat oleh @MartinButtner dan @alephalpha , 1##&adalah jawaban 4 byte lainnya. Lihat yang pertama untuk penjelasan.


Tugas 10, Rail, 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}#
                     -/          -/

( Halaman wiki Esolang untuk Rail )

Saya tidak bisa melewatkan kesempatan untuk melakukan tugas yang berhubungan dengan kereta di Rail :) Ruang putih terlihat cukup golf, tetapi dengan bercabang mengambil tiga baris itu akan membutuhkan sedikit pekerjaan untuk dipadatkan.

Input adalah bilangan bulat melalui STDIN, tetapi harus ada EOF. Bagian kiri atas

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

adalah loop atoi yang mengubah input ke integer sementara bukan EOF (diperiksa oleh einstruksi).

Fungsi fpada tiga baris terakhir membutuhkan x, y, n, dan menampilkan waktu string x n, dipisahkan oleh y. Fungsi ini bersifat rekursif, dengan nmengurangi satu setiap kali hingga menjadi nol. fdisebut tiga kali, memasok string yang berbeda untuk setiap baris. Anehnya, Rail memungkinkan nama variabel menjadi kosong, yang menyimpan beberapa byte.

Sayangnya, sebagian besar byte berasal (!x!), yang memunculkan bagian atas tumpukan dan menetapkannya ke variabel x, dan (x), yang mendorongnya xke tumpukan. Ini diperlukan karena tidak ada operator duplikat di Rail, jadi (!x!)(x)(x)adalah satu-satunya cara untuk menyalin bagian atas tumpukan.

Sp3000
sumber
Jika tugas 2 berada di rs, Anda akan menghemat 2 byte, dan biayanya hanya 14 byte untuk mengambil angka, bukan unary. ;)
kirbyfan64sos
Ketika saya melihat raket, saya pikir Anda suka tanda kurung; tapi tanda kurung ...
bunyaCloven
13

Tugas 1, CJam, 7 byte

q~,:+_*

Saya hanya ingin mendapatkan solusi CJam optimal (mungkin) untuk ini masuk Ini memanfaatkan fakta bahwa jumlah dari n kubus pertama adalah kuadrat dari angka segitiga n , yang merupakan jumlah dari bilangan bulat n pertama .

Uji di sini.


Tugas 4, Fission, 173 88 78 69 68 byte

Repositori GitHub untuk Fission.

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

Program Fisi kedua saya yang cukup rumit. :)

Format input agak aneh. Untuk mendukung input negatif, karakter pertama diharapkan berupa +atau -untuk menunjukkan tanda. Nilai byte karakter kedua adalah besarnya input (karena Fission tidak dapat membaca bilangan bulat desimal secara native). Jadi jika Anda mau, 111Anda akan meneruskannya +odi STDIN. Dan jika Anda mau, -56Anda lewati -8. Di tempat +dan -Anda dapat menggunakan karakter apa saja dengan kode karakter yang lebih rendah atau lebih tinggi, masing-masing. Ini bisa membantu untuk menyampaikan sesuatu seperti -n(yang echomungkin Anda anggap sebagai argumen) seperti, misalnya,0n ,.

Mari kita lihat bagaimana kita dapat menemukan representasi negabiner dari angka positif. Kami ingin menghitung angka dari bit paling sedikit hingga paling signifikan (kami akan mendorong bit-bit itu di tumpukan dan mencetak semuanya di akhir untuk membuatnya dalam urutan yang benar). Digit pertama kemudian hanya paritas angka, dan kami integer-bagi angka dengan 2 untuk melanjutkan pemrosesan. Digit berikutnya sekarang negatif (dengan nilai -2) - tetapi harus dicatat bahwa bit ini akan ditetapkan setiap kali 2-bit akan ditetapkan dalam angka biner yang normal. Satu-satunya perbedaan adalah bahwa kita perlu mengimbangi -2 dengan angka bernilai positif lebih tinggi. Jadi yang kami lakukan adalah ini:

  • Kami menentukan paritas lagi - ini adalah negabit berikutnya - dan bagi 2 seperti sebelumnya.
  • Jika digit itu adalah a 1, kami menambah angka yang tersisa dengan 1 untuk melawan aksi bit negatif (perbedaan antara negabit dan bit adalah sekali nilai bit berikutnya yang lebih signifikan).

Sebuah penyederhanaan besar dari hasil kode dari menyadari bahwa kondisional menambahkan satu di sini setara dengan pembulatan angka up ketika bilangan bulat membagi (jika bit dibuang adalah 1, kita kenaikan hasil integer-dibagi dengan 1).

Kemudian, bit berikutnya hanyalah nilai positif lagi sehingga kita dapat menentukannya secara normal. Itu berarti kita menginginkan sebuah loop yang menghitung dua bit pada satu waktu, bergantian antara pembulatan ke atas dan pembulatan ke bawah untuk angka yang tersisa, tetapi kita ingin memasukkan loop di tengah sehingga kita mulai dengan pembulatan ke bawah.

Bagaimana kita bisa menangani bilangan bulat negatif? Masalahnya adalah bahwa Fission tidak dapat benar-benar melakukan aritmatika arbitrer pada bilangan bulat negatif, karena massa selalu non-negatif. Jadi seseorang harus melakukan sesuatu yang sangat rumit seperti bekerja dengan besarnya dan melacak tanda di tempat lain. Namun, representasi negatif dari angka negatif dapat dihitung berdasarkan angka positif terkait:

Jika n adalah negatif, menghitung representasi negabinary dari n / 2 (dibulatkan ke atas ) dan menambahkan paritas n .

Ini persis langkah pertama dari loop dua-bit kami. Jadi yang perlu kita lakukan adalah memulai loop pada titik yang berbeda jika tandanya negatif.

Sebagian besar penghematan dari 173 byte asli berasal dari wawasan ini yang memungkinkan saya untuk mengompres tiga pemeriksaan paritas dan loop dua bagian menjadi satu loop dengan cek paritas tunggal.

Posting ini akan menjadi terlalu lama jika saya menjelaskan semua kode secara rinci, tetapi saya akan menunjukkan beberapa bagian untuk memberikan tata letak kasar dari aliran kontrol, dan Anda dapat memecahkan detail dengan referensi Fission.

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

Mulai dari D, ini membaca bit tanda ke energi dan besarnya menjadi massa atom yang berakhir di [(ke kanan). Bit tanda ini akan bergantian setelah setiap melewati pemeriksaan paritas dan akan menentukan apakah kita mempertahankan setengah yang dibulatkan atau dibulatkan ke atas dari input loop.

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

Ini adalah loop yang menghitung bit individu dan memasukkan setengah yang benar ke iterasi berikutnya. The Sdan Jdigunakan untuk membuat salinan babak tepat berdasarkan bit tanda saat ini, Xs lakukan hal menyalin. Di >sudut kanan atas menghitung bit aktual yang kemudian dikirim ke tumpukan Kuntuk diambil nanti. Saya pikir tata letak sudut kanan atas cukup bagus dan pasti layak dipelajari secara detail jika Anda tertarik dengan Fission.

Ini %adalah saklar yang mengumpankan nomor kembali ke loop selama itu lebih besar dari 0.

    O


 M~\
 K/W%

 \{\/
0'A Y

Setelah angka mencapai 0 itu tercermin sebagai gantinya. Ini memulai loop lain yang mengambil bit dari stack, menambahkannya ke kode karakter 0dan mencetaknya O. Program berakhir setelah tumpukan kosong, karena atom kontrol akan berakhir didorong pada tumpukan (dan setelah itu tidak ada lagi atom yang bergerak).


Tugas 5, Prelude, 219 179 96 byte

Halaman Esolangs untuk Prelude.

Stack Snippet interpreter untuk Pendahuluan.

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

Ini dimulai sebagai program Prelude output tetap kerajinan tangan standar dengan tiga suara. Setelah mengobrol dengan Sp3000 saya memutuskan untuk mencoba satu suara. Ternyata ini bekerja cukup baik, karena jauh lebih mudah untuk menggunakan kembali surat yang lebih tua. Kemudian Dennis memberi saya beberapa petunjuk dan saya menemukan versi saat ini: idenya adalah mendorong semua offset dari surat hke tumpukan satu suara dalam urutan terbalik, dan kemudian hanya mencetaknya satu per satu dalam satu lingkaran. hdipilih karena tidak ada hdalam string (yang penting - jika 0offset akan mengakhiri loop) dan karena meminimalkan pengkodean offset dalam hal offset dua digit dan negatif.

Pengkodean offset dibuat dengan skrip CJam ini .


Tugas 8, Mathematica, 28 byte

LongestCommonSequence@##==#&

Yay untuk built-in. (Mathematica ini penamaan agak aneh di sini ... LongestCommonSubsequencemenemukan umum terpanjang substring sementara LongestCommonSequencetemuan umum terpanjang subsequence .)


Tugas 9, J, 1 byte

*

Sama seperti APL dan K menjawab, tetapi tampaknya belum ada yang mengambil J.


Tugas 10, Retina, 67 60 byte

Repositori GitHub untuk Retina.

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

Setiap baris masuk dalam file terpisah, dan <LF>harus diganti dengan karakter baris baru dan <empty>harus menjadi file kosong. Anda juga dapat meletakkan semua ini dalam satu file, dan menggunakan -sopsi, tetapi itu belum memungkinkan penyisipan karakter baris baru <LF>. Anda bisa meniru itu dengan melakukan sesuatu seperti

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

Seperti ditunjukkan contoh di atas, input diharapkan unary. Gagasan kode adalah untuk membuat tiga salinan dari input unary (minus 1), masing-masing dengan salinan dari baris yang sesuai. Kemudian kami berulang kali menduplikasi sembilan karakter terakhir di depan a 1sampai semua huruf 1hilang, dengan demikian mengulangi baris yang diperlukan. Akhirnya, kami menghapus jejak luar ~.

Martin Ender
sumber
10

Eh, saya akan mulai dengan pasangan kurasa. Pertama kali bermain golf.

Tugas 1, Python, 38 21 byte

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

Jumlahkan semua kubus hingga x. Berubah ekspresi berkat xnor

Tugas 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

Tidak 100% pasti tentang ini, akan menguji ketika saya menemukan baterai baru untuk kalkulator saya. isPrime adalah builtin, ipart adalah bagian integer (2.3 -> 2)

Tugas 3, Perl, 45 34 Bytes

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

perl file 1 2 3 4 -> 2. Menyimpan beberapa byte berkat @nutki. Dicetak daripada menyimpan ke variabel kemudian mencetak variabel.

Tugas 4, Ruby, 43 40 byte

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

Setidaknya itu berfungsi di 1.9, tidak tahu tentang 1.8. Dalam biner, '10' * 16 (atau 2863311530) ditambah angka, xor dengan yang 10101010 ... adalah negbinary. Menghasilkan representasi string dengan tanda kutip (3 -> "111" daripada 3 -> 111). Tidak dapat menemukan matematika untuk menulis x dalam karakter yang lebih sedikit.

Tugas 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

Tes online di sini Pikirkan ini sesingkat mungkin. Golf sebanyak yang saya bisa. Disimpan 300 byte, jadi whee?

Tugas 6, bash, 62 50 40 byte

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

Ditemukan sekitar% j dari pos lain.

Tugas 10, Befunge-98, 121 Bytes

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

Diubah menjadi befunge-98. Lama adalah Befunge-93, 227 157 147 byte. Fungi Bekas , ditulis dalam Haskell untuk pengujian. Menggunakan "do multiple times k" dan menambahkan satu karakter ke stack with '. Saya punya perasaan bisa bermain golf hingga 110 atau kurang, tapi saya sudah menghabiskan terlalu banyak waktu untuk ini ...

Yakub
sumber
@ Dennis karena saya tidak bisa bertanya pada posting utama, saya akan bertanya di sini. Apakah input yang dipisahkan ruang ok untuk tugas 3? Tidak akan ada di [].
Yakub
Apa pun yang sesuai dengan kebutuhan Anda.
Dennis
1
Anda dapat mempersingkat jumlah kubus dengan rumus sebagailambda n:(n*n-n)**2/4
xnor
Anda dapat menggunakan 0=fPart(expression) rather than iPart (ekspresi) = ekspresi` dalam jawaban TI-89 BASIC Anda.
lirtosiast
1
Saya pikir argumen itu tidak berfungsi dengan baik ketika berbicara tentang sesuatu seperti Python 2/3. Misalnya, `n` bekerja lebih baik daripada str (n) dalam 2, tetapi tidak berfungsi dalam 3. Saya tidak dapat memikirkan contoh lain saat ini, saya lebih peduli dengan golf yang menjawab lebih banyak lagi: p
Jacob
9

Hal pertama: tugas 6 secara teknis TIDAK diperhitungkan; Saya mengunggah unc di bawah satu jam yang lalu. Namun, saya hampir mengunggahnya pagi ini, tetapi memutuskan untuk menulis test suite terlebih dahulu. Idiot.

Jadi, bagaimanapun, ini dia!

Perhatikan bahwa sebagian besar hal-hal yang tidak disengaja sengaja mundur, jadi &&sangat berarti ||dan semacamnya, itulah sebabnya beberapa operasi terlihat aneh (misalnya menggunakan -untuk menghitung kubus).

Tugas 1, Haskell, 21 byte

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

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

Tugas 3, Dart, 37 byte

Fungsi Dart pertama saya!

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

Tugas 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

Tugas 6, unc, 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#']:>>

Tugas 8, rs, 42 byte

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

Demo langsung.

Tugas 10, Pyth, 46 byte

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

Demo langsung.

kirbyfan64sos
sumber
@ Dennis Ups! Tetap!
kirbyfan64sos
1
Yah, saya tidak tahu, tapi saya cukup yakin Anda tidak perlu salah satunya !include. Tidak sepenuhnya yakin yang mana.
Dennis
@ Dennis Pertama termasuk adalah stdio.h, kedua adalah time.h. Saya membutuhkan keduanya.
kirbyfan64sos
Apa yang uncdigunakan untuk mengkompilasi kode C? GCC akan bekerja dengan baik tanpa stdio.h. Tidak yakin tentang itu time.h.
Dennis
@Dennis unc tidak memiliki set compiler. Itu hanya menghasilkan kode C; Saya harus mengkompilasinya sendiri. Namun, itu tidak masuk akal; Saya akan memeriksanya nanti.
kirbyfan64sos
8

Tugas 1, APL, 7 byte

+/3*⍨⍳⎕

Anda dapat mencobanya secara online menggunakan ngn / apl, meskipun itu akan berfungsi dengan implementasi APL apa pun yang default ke asal 0 indeks.

Ini kubus setiap integer dari 0 ke input ( ⍳⎕) -1 dengan mengubah ( ) argumen ke operator daya (* ). Vektor yang dihasilkan dikurangi dengan menjumlahkan ( +/) dan skalar dikembalikan.


Tugas 2, Julia, 42 byte

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

Ini menciptakan fungsi anonim yang menerima integer sebagai input dan mengembalikan boolean. Untuk menyebutnya, berikan nama, mis f=n->....

Pertama kita menggunakan fungsi bawaan Julia isprimeuntuk memeriksa apakah nprime. Jika ya, kami memeriksa apakah log2(n+1)itu bilangan bulat. Jika demikian, ndapat ditulis 2^k-1untuk beberapa orang k, dan karenanya nmerupakan perdana Mersenne.


Tugas 3, ELI , 19 byte

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

Ini menciptakan monad fyang mengembalikan median vektor input.

Penjelasan + tidak dikumpulkan:

{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)
]}

Contoh:

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

Tugas 4, Oktaf, 39 byte

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

Ini menciptakan fungsi yang menerima integer sebagai input dan mengembalikan string negabinary yang terkait. Untuk menyebutnya, berikan nama, misalnya f=@..., dan jalankan dengan feval(f, <input>).

Anda dapat mencobanya secara online .


Tugas 5, CJam, 47 byte

"pneumonoultramicroscopicsilicovolcanoconiosis"

String hanya dicetak ke STDOUT. Anda dapat mencobanya secara online jika Anda merasa sangat ingin.


Tugas 6, Windows Batch, 46 byte

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

Variabel %date%berisi tanggal saat ini dalam formulir Thu 06/25/2015. Kita dapat memilih bulan dan hari dengan mendapatkan substring panjang 5 setelah melewatkan pertama 4 karakter: %date:~4,5%. Dari sana kita periksa apakah tanggal 1 Januari dan ucapkan Selamat Tahun Baru jika itu.


Tugas 7, Pyth, 26 byte

=Gr13312 19895FNU64pC.(.SG

Pertama, kami menetapkan Gkisaran 13312 hingga 19894 inklusif. Lalu kami mengulang sebanyak 64 kali, dan pada setiap iterasi kami mengocok G( .SG), menghapus dan mengembalikan elemen terakhir (.( ), dan mencetak representasi karakternya ( pC).

Anda dapat mencobanya secara online .


Tugas 8, Ruby, 36 byte

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

Ini mendefinisikan fungsi fyang menerima dua string adan b, di manaa string untuk ditemukan di dalamnya b.

Semuanya kecuali karakter di adihapus dari bpenggunaan .tr()dan kami memeriksa apakah hasilnya mengandung apersis menggunakan []. Ini akan kembali niljika string tidak ditemukan, sehingga kita bisa mendapatkan nilai boolean dengan menggunakan !with .nil?.


Tugas 9, R, 16 byte

function(x,n)n*x

Ini menciptakan objek fungsi tanpa nama yang menerima segala jenis array atau matriks xdan integer ndan mengalikan setiap elemen xdengan n. Jika mau, Anda dapat mencobanya secara online .


Tugas 10, Python 3, 92 byte

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

Cukup mudah. Anda dapat mencobanya secara online .

Alex A.
sumber
Jawaban APL tidak cukup 7 byte, karena ada tiga karakter Unicode dalam rentang yang lebih tinggi.
Tom
6
@ Tom: Setiap jawaban dapat memilih penyandian yang paling nyaman. Di halaman kode APL , satu karakter adalah satu byte.
Dennis
Anda dapat mencobanya secara online jika Anda merasa sangat ingin :-D
Luis Mendo
7

Tugas 1,> <>, 10 + 3 = 13 byte

::*-:*4,n;

Jalankan ini menggunakan juru bahasa Python resmi menggunakan -vbendera (dengan biaya 3 byte). Ini kuadrat kuantitas (n - n*n)dan dibagi dengan 4, yang tentu saja setara dengan kuadrat (n*n - n)dan bagi 4.

Tugas 2, GAP, 63 62 byte

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

(Menyimpan spasi dengan menulis kesetaraan sebaliknya.)

Tugas 3, R, 43 39 byte

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

Terima kasih kepada Plannapus untuk peningkatan yang menyenangkan!

Tugas 4, Piet, 155 135 115 5 * 19 = 95 codels

masukkan deskripsi gambar di sini

Tes menggunakan juru bahasa online ini , dengan ukuran kode 13. Atau gunakan juru bahasa pilihan Anda - beri tahu saya jika Anda punya yang Anda suka!

Menghasilkannya sebagai 0ganti string kosong untuk input0 tidak nyaman. Saya menggunakan jika-maka di dekat awal untuk menangani kasus ini; kemudian loop-sementara untuk menghitung angka-angka dalam case bukan nol, dan akhirnya loop-sementara lainnya di akhir untuk menampilkan digit-digit dari stack.

Terima kasih banyak kepada Sp3000 untuk beberapa komentar yang sangat membantu, yang membantu saya menghemat beberapa codel!

Tugas 5, Lua, 52 byte

print"pneumonoultramicroscopicsilicovolcanoconiosis"

Anda bisa mencobanya di sini .

Tugas 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}

Jika produk hari dan bulannya 1, cetak pesannya; jika tidak, tidak ada. (Hari Tahun Baru sangat nyaman untuk desain ini: karena output yang kita cari adalah 1, kita hanya perlu satu orpernyataan. Pernyataan nth ormenentukan perilaku untuk nilain .)

Catatan: versi saya sebelumnya tidak memiliki pengembalian baris, yang merupakan kesalahan. (Saya memang mencoba menguji fungsi ini, tetapi untuk benar-benar mengujinya dengan benar mungkin perlu waktu ...)

Versi asli saya menggunakan calcpaket, yang jauh lebih nyaman daripada versi saya saat ini. Sesuatu yang perlu diingat untuk "kehidupan nyata"!

Tugas 7, Ruby, 62 byte

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

Tugas 8, JavaScript, 78 byte

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

Solusi rekursif, menguji apakah lmerupakan substring dari m. Jika lkosong, maka !lhasil truedan fungsi berakhir. (Dalam hal ini, l[0]tidak terdefinisi, tapi JavaScript adalah OK dengan itu.) Jika tidak, mencari contoh pertama l[0]di m. Jika tidak menemukannya, maka m.indexOf(l[0])hasilkan-1 dan uhasilnya 0dan fungsi berakhir.

Kalau tidak, itu menghapus entri pertama ldan yang pertamau entrim dan terus memeriksa.

Tugas 9, Python, 72 60 byte

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

Latihan ke "level terendah", di mana a bukan daftar lagi, hanya bilangan bulat, lalu lakukan penggandaan.

Terima kasih banyak untuk Dennis karena telah menyelamatkan saya 12 byte!

Tugas 10, Groovy, 81 byte

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

Coba di sini . Saya awalnya mencoba menerapkan sesuatu seperti .join()metode Python untuk string, yang menempatkan string bersama dengan "string penghubung" tertentu (seperti hubungan antara gerbong kereta). Tetapi harganya jauh lebih mahal daripada yang dihemat.

Saya harap saya tidak melanggar konvensi untuk jawaban yang dapat diterima dalam berbagai bahasa ini, tapi tolong beri tahu saya jika ada.

Terima kasih kepada Dennis untuk tantangan fantastis!

mathmandan
sumber
except:return n*amenghemat beberapa byte untuk tugas 9. Untuk tugas 1, saya akan menghitung -vbendera sebagai satu byte.
Dennis
@Dennis Lihat posting meta ini . Meskipun, dengan posting meta ini , Anda mungkin dapat mengganti -vflag dengan i(walaupun saya pikir akan lebih baik jika kedua versi disebutkan, untuk pengujian yang lebih mudah).
Sp3000
@ Dennis, terima kasih banyak atas peningkatan cerdas Anda!
mathmandan
1
3 byte benar oleh meta post di atas (spasi -,, v). Saya hanya bermaksud bahwa Anda memiliki opsi untuk menerima input sebagai titik kode melalui iinstruksi.
Sp3000
1
btw, untuk # 4, modulo negatif tidak aneh - itu hanya bervariasi dari satu bahasa ke bahasa lainnya (misal Java melakukannya dari memori). Salah satu cara untuk mengeluarkan seluruh tumpukan mungkin dengan menyimpan sesuatu di bagian bawah tumpukan yang Anda tahu tidak akan ada di keluaran, dan tetap mencetak karakter sementara itu bukan karakter khusus. Juga, ada PietCreator .
Sp3000
6

Tugas 1, Pyth, 5 byte

s^R3Q

Mengambil nomor dari stdin. Terima kasih @ Jakube untuk menunjukkan yang tidak berguna U.

Tugas 6, javascript, 56 byte

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

Tugas 7, CJam, 16 byte

6581,mr64<'㐀f+

Menghasilkan kisaran, mengocok, memilih yang pertama 64, dan memetakan penambahan nilai awal dan mengonversi ke karakter. 14 karakter, 16 byte.

Tugas 8, Oktaf, 23 byte

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

Menentukan fungsi anonim.

Tugas 5, PHP, 45 byte

pneumonoultramicroscopicsilicovolcanoconiosis

Tidak ada kompresi, hanya cetak.

Tugas 9, APL 1 byte

 ×

Sama dengan jawaban K.

Maltysen
sumber
@ Dennis Saya juga tidak tahu - Saya hanya mencari Google di firasat dan menempatkan jawaban ini bersama tanpa pengujian :). Saya akan mencoba untuk menguji emulator sekarang.
Maltysen
@ Dennis oh Anda benar, itu rata-rata tengah 2, mencatatnya.
Maltysen
1
Apa yang kamu lakukan dengan ruang itu .slice(4, 10)?
LegionMammal978
@Dennis derrrp. Maaf.
Maltysen
1
Hanya ada satu bulan singkatan yang berakhir dengan "an", sehingga Anda dapat meninggalkan J saat pengujian. (Ini juga akan jauh lebih singkat untuk dilakukan /an 01/.test(Date()).)
NinjaBearMonkey
6

Tugas 1, R, 21 19 byte

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

Cukup lurus ke depan. Masukan dari STDIN.

Tugas 2, Perl, 40 66 byte

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

Menambahkan pemeriksa utama (Abigails prime number checker regex)

Tugas 3, PARI / GP, 24 22 byte

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

Pertama kali saya menyentuh ini. Mungkin harus belajar sedikit lebih banyak tentang itu.

Tugas 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

Fungsi tabel sebaris menggunakan CTE rekursif. Sangat besar, tetapi menyenangkan untuk dilakukan.

Menggunakan

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

Tugas 5, GAP, 48 byte

"pneumonoultramicroscopicsilicovolcanoconiosis";

Tugas 6, Excel, 51 48 byte

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

Terima kasih kepada @Bond untuk 3 byte.

Tugas 7, Python 2.6, 98 93 85 byte

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

Ini adalah pertama kalinya saya mencoba melakukan apa pun dengan Python, jadi bisa jauh lebih baik. Terima kasih @Dennis dan @Jacob untuk tips yang luar biasa

Tugas 8, TCL, 57 byte

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

Malu bahwa menghapus spasi membunuh ini

Tugas 9, Pike, 53 byte

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

Fungsi yang mengembalikan array yang dikalikan

Tugas 10, Powershell, 88 byte

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

Fungsi Powershell. Saya pikir saya bisa memperpendeknya sedikit, tapi ini dia saat ini.

Dan akhirnya selesai :)

MickyT
sumber
Anda dapat menyimpan 4 bytes pada tugas 6: =IF(TEXT(NOW(),"md")="11","Happy New Year!","").
Obligasi
@Bond Terima kasih untuk itu
MickyT
Saya tidak tahu Python juga, tetapi l[:63]harus bekerja dan (13312,19894)lebih pendek dari konstanta heksadesimal (dan jumlahnya).
Dennis
@Dennis Terima kasih akan mencobanya dan berubah
MickyT
@ Dennis saya memilih nilai 19893 sebagai nilai tinggi karena range(19892,0x4DB5+1)memberi saya[19892, 19893]
MickyT
4

Tugas 2, J, 10 byte

1&p:*/@,#:

Tambahkan boolean 0 atau 1 jika inputnya prima untuk representasi binernya, lalu ambil produknya. Bekerja pada versi J. saat ini


Tugas 5, HTML, 45 byte

pneumonoultramicroscopicsilicovolcanoconiosis

Tugas 6, ikan, 53 byte

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

Berdasarkan jawaban bash.


Tugas 8, APL, 12 byte

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

Ini adalah ekspresi fungsi. Ini membandingkan urutan karakter yang ditemukan dalam string yang lebih besar dengan apa yang diharapkan jika mereka diurutkan.


Tugas 9, K, 1 byte

*

Harus bekerja dalam versi apa pun. Operasi aritmatika mendistribusikan array.

Tom
sumber
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Martin Ender
2
Kode Anda untuk tugas 8 tidak berhasil abc caxbxc.
jimmy23013
4

Tugas 1, Ruby, 40 byte

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

Pertama kali menulis apa pun di Ruby. Diuji dengan ruby ​​1.8.7.


Tugas 2, R, 50 byte

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

Menghitung p, periksa apakah bilangan bulat, dan jika n dan p adalah bilangan prima.


Tugas 5, PostgreSQL, 54 byte

SELECT'pneumonoultramicroscopicsilicovolcanoconiosis';

Tugas 6, Lua, 55 byte

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

Tugas 8, Python, 65 byte

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

Pemakaian:

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

Tugas 10, Julia, 73 byte

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

Terima kasih kepada @AlexA. untuk membantu memperpendek kode ini! Contoh output:

julia> f(0)




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

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

julia> f(3)
 ______   ______   ______  
|      | |      | |      | 
 ()--() ~ ()--() ~ ()--() 
plannapus
sumber
Untuk Tugas 2 Anda dapat menggunakanlog2
MickyT
Saya menghitung 86 byte saat ini untuk tugas Julia Anda 10. Tapi Anda bisa mendapatkannya ke 81 dengan menggunakan fungsi lambda (yaitu ganti f(n)=dengan n->) dan berubah 1:(9*n-1)menjadi sederhana 1:9n-1.
Alex A.
Benar saya dihitung \nsebagai 1 byte, berdasarkan kebiasaan.
plannapus
Daripada (" "*"_"^6*" ")^n, Anda dapat menggunakan " ______ "^n(demikian juga untuk | |bagian itu). 70 byte: n->print(" ______ "^n*"\n"*"| | "^n*"\n"*(" ()--() ~"^n)[1:9n-1]). (Ruang kosong di antara bar tidak ditampilkan di sini)
Alex A.
3

Tugas 1, Haskell, 17 byte

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

Tugas 2, Mathematica, 30 byte

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

Tugas 3, JavaScript, 46 byte

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

Tugas 5, MATLAB, 47 byte

'pneumonoultramicroscopicsilicovolcanoconiosis'

Tugas 6, Ruby, 56 byte

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

Tugas 7, Python, 106 byte (indentasi dengan \t)

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

Perhatikan bahwa penggunaan langsung dari list(set(s))tidak tidak bekerja di sini karena ini akan menyebabkan distribusi probabilitas non-seragam dalam ruang semua string mungkin karena pemesanan kembali anggota daftar.


Saran
sumber
@Dennis kembali tugas 7: Disetujui pada poin 1, akan diperbaiki kapan pun saya memiliki kesempatan. Sehubungan dengan REPL, apakah ada aturan yang melarang itu?
Saran
Baik, semua sudah diperbaiki sekarang.
Saran
Untuk 1, mungkin Anda bisa melakukannya (x*x-x)^2/4?
xnor
Menjengkelkan, fungsi pengurutan standar JavaScript mengubah angka menjadi string saat membandingkan, sehingga hanya membandingkan angka pertama dari setiap angka. Oleh karena itu, gagal pada [2,3,10].
NinjaBearMonkey
1
Di 7, Anda dapat benar-benar meletakkan if c not in s:s+=csemuanya di satu baris, menyimpan beberapa karakter. Juga 0x3400dapat diganti dengan 13312, yang merupakan satu karakter lebih pendek (dan juga untuk 0x4db5). Akhirnya, itu tidak akan mengubah jumlah karakter, tetapi jika Anda tidak suka lekukan tab, Anda dapat indentasi dengan spasi tunggal sebagai gantinya.
mathmandan
3

Tugas 1, Haskell, 15 byte

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

Tugas 2, Julia, 28 byte

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

Tugas 3, Oktaf, 30 byte

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

Tugas 5, Yacas , 45 byte

pneumonoultramicroscopicsilicovolcanoconiosis

Tugas 6, Mathematica, 46 byte

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

Tugas 9, PARI / GP, 10 byte

(n,a)->n*a
alephalpha
sumber
3

Tugas 3, Klip, 13 byte

gHk[tivt}l`sk

Versi lain:

gHkci`v``l`sk

The `tampaknya biaya terlalu banyak.

Tugas 4, KSFTgolf, 16 byte

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

Penerjemahnya ada di sini. Saya tidak yakin apa yang saya lakukan ... Ini akan mencetak negabinary dan kemudian crash.

Ada bug pada penerjemah. Atau saya akan dapat menurunkannya hingga 12 byte menggunakan konversi basis bawaan (tetapi hanya bekerja dengan bilangan bulat positif):

2*02-ba'Z=;x

Versi CJam asli:

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

Saya mencoba Pip, Ostrich, Clip dan Burlesque untuk mencari tahu apakah ada esolang dengan built-in negabinary. Tak satu pun dari mereka yang bekerja. KSFTgolf digunakannumpy , yang tampaknya memiliki beberapa perilaku aneh convienent ketika basis negatif. Tetapi tidak mudah untuk membuatnya bekerja dengan angka yang tidak positif.

Tugas 7, CJam, 15 byte

'䶶,DAm<>mr64<

Tugas 8, APL, 21 byte

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

Cobalah online.

jimmy23013
sumber
Lol @ "Saya tidak yakin apa yang saya lakukan"
Alex A.
Pertanyaannya tidak terlalu jelas tentang hal ini, tetapi maksud saya adalah bahwa kode untuk tugas 4 harus menangani input 0. Versi tanpa built-in base conversion tampaknya dapat menanganinya dengan baik.
Dennis
@Dennis Diperbaiki. Tetapi bagaimana jika saya memilih untuk menggunakan unary?
jimmy23013
Menggunakan beberapa offset tetap atau komplemen 2's dapat bekerja. Saya juga menerima tanda diikuti oleh nomor unary.
Dennis
3

Tugas 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

(tidak termasuk header, MessageBox, dll - hanya byte yang relevan)

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

Tugas 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]);}

Kompilasi menggunakan gcc -o Prime main.c


Tugas 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);}

Kompilasi menggunakan g++ -o Trucks main.cpp

C & C ++ dapat dipersingkat tetapi akan menambah kesalahan kompiler. Tidak tahu aturan pasti, jadi saya mencoba meninggalkan kode tanpa kesalahan kompiler.

Pulga
sumber
3
Selamat datang di PPCG! Peringatan kompiler dapat diabaikan dengan aman, selama kompiler menghasilkan biner yang dapat digunakan.
Dennis
2
Dalam golf kode, kompiler C akan memperingatkan Anda bahwa ia dapat dip Golf lebih lanjut dengan tidak menghasilkan peringatan.
Comintern
Abaikan peringatan - dan rasakan, eh, bebas untuk membocorkan memori sebanyak yang Anda inginkan juga. :-)
Toby Speight
3

Tugas 1, Python, 35 Bytes

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

Tugas 3, CJam, 9 Bytes

q~$_,(2/=

Tugas 4, JavaScript, 55 53 Bytes

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

Tugas 5, Pyth, 46 Bytes

"pneumonoultramicroscopicsilicovolcanoconiosis

Tugas 6, C #, 65 Bytes

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

Tugas 1, jq, 24 byte

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

Tugas 6, PostgreSQL, 54 byte

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

Tugas 1, Cjam, 7 byte

q~,:+_*

Sunting: Baru diperhatikan martin memposting ini sebelum saya. Saya akan mencoba sesuatu yang lain ...

Tugas 3, Python, 30 byte

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

Python 2.

Tugas 5, ///, 45 byte

pneumonoultramicroscopicsilicovolcanoconiosis

/// hanya akan menggemakan sesuatu tanpa/ karakter .

Tugas 7, Pyth, 19 byte

s>64.SmC+13312d6582

Program. Tolong beritahu saya jika saya menghitung matematika.Coba di sini

Tugas 9, Oktaf, 9 byte

@(a,n)a*n

Pegangan fungsi anonim. Oktaf secara otomatis melakukan ini dengan matriks * skalar.

FryAmTheEggman
sumber
Untuk tugas 7, harus unik.
Maltysen
Ya, pyth memiliki .Sshuffle, dan Anda dapat menggunakan sum bukan jk.
Maltysen
2

Saya belum menemukan waktu untuk mencoba semuanya, tapi ini awal

Tugas 1, dc, 8 byte

d1+*d*4/

Input dan output ke atas tumpukan, sesuai dckonvensi.

Tugas 5, Emacs Lisp, 46 byte

'pneumonoultramicroscopicsilicovolcanoconiosis

Penyalahgunaan aturan:

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

Yang terbaik yang bisa saya kelola dengan membongkar dari bentuk terkompresi adalah 55, di Perl:

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

(karakter yang tidak dapat dicetak di atas dikacaukan oleh SE, tetapi karena sebenarnya bukan jawaban saya, saya tidak memperbaikinya)

Tugas 6, SQL, 54 byte

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

Saya menganggap sepuluh hari pertama bulan Januari sebagai hari yang 'pantas' untuk salam ini, tetapi Anda dapat menyesuaikan dengan selera. The now() LIKEkonstruk bekerja keluar lebih pendek dari penggalian hari-dari-tahun denganDATE_FORMAT(now(),'%j') .

Tugas 10, sed, 58 byte

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

Masukan di unary.

Toby Speight
sumber
strstrSeach untuk substring, bukan sesudahnya. Saya khawatir tugas 5 adalah kolmogorov-kompleksitas, jadi mengambil kata dari kamus mungkin pintar, tetapi itu tidak diizinkan.
Dennis
Terima kasih. Saya salah paham soal yang berikutnya. Saya akan melakukan tugas alternatif 5, tapi itu sangat membosankan.
Toby Speight
Ada beberapa solusi yang menarik untuk tugas 5, tapi tidak ada yang membukukan singkat sejauh ini.
Dennis
1

Tugas 5, MarioGolf , 50 byte

Ini adalah bahasa yang saya kembangkan untuk beberapa waktu.

Versi saat ini memiliki fungsionalitas yang cukup untuk memungkinkan untuk menjalankan tantangan ini.

Y|<pneumonoultramicroscopicsilicovolcanoconiosis|O

Anda dapat mencobanya secara online di http://htmlpreview.github.io/?https://raw.githubusercontent.com/ismael-miguel/mariogolf/master/js/testpage.html#c:Y|<pneumonoultramicroscopicsilicovolcanoconiosis|O

Saat ini, pengembangan dihentikan dan implementasinya tidak lengkap.

Komit terbaru adalah pada 13 Maret 2015.

Tugas 6, PHP, 37 byte

Yang ini sangat mudah, dan menyenangkan!

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

Tugas 10, Javascript, 121 byes

Ya, tidak begitu golf ...

Tapi itu berhasil!

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

Cobalah:

Kode tidak akan ditampilkan dengan baik di snipet tumpukan karena dimulai dengan "di output. Ruang tambahan ditambahkan sebagai kompensasi.

Kode asli dapat dieksekusi di konsol Chrome tanpa masalah, dan hasilnya akan seperti yang diharapkan.

Ismael Miguel
sumber
@ Dennis Terima kasih! Saya salah membaca tugas 5. Saya masih mencari bagaimana saya akan mengimplementasikan tugas-tugas lain, tapi saya mengalami waktu yang buruk.
Ismael Miguel
1
Anda yakin tentang itu date(dM)? Ini dia mengembalikan "25 Juni". (locale set ke en_US) Mungkin "j" dan "n" akan berfungsi lebih baik, karena "d" dan "m" mengembalikan nilai 0 padded ke width 2.
manatwork
@manatwork Anda benar. Itu kesalahan saya. Bahwa kau yang menemukannya.
Ismael Miguel
1

Tugas 1, CJam, 10 byte

li,{3#}%:+

Coba Di Sini

Tugas 5, Retina, 46 byte

<empty>
pneumonoultramicroscopicsilicovolcanoconiosis
TheNumberOne
sumber
1

Tugas 1, Oktaf, 15 byte

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

EDIT: Saya pikir saya menambahkan ini tetapi sepertinya saya lupa menyimpan: Ini menggunakan fakta bahwa sum(1^3+2^3+3^3+...+n^3) = sum(1+2+3+...+n)^2 = [n*(n+1)/2]^2

Tugas 3, Javascript, 24 byte

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

Oke, mari kita selesaikan hal-hal mudah terlebih dahulu:

Tugas 5, ASP, 45 byte

pneumonoultramicroscopicsilicovolcanoconiosis

Tugas 6, JavaScript, 46 byte

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

Tugas 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

Saya belum tahu bagaimana cara bermain golf di VBA. Saya tidak mengetik satu spasi, VBA secara otomatis memasukkan spasi putih.=f(5)dalam sel di Excel akan menampilkan 100.

Tugas 2, Oktaf, 32 Bytes

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

Tugas 5, Golfscript, 47 byte

"pneumonoultramicroscopicsilicovolcanoconiosis"

Tugas 9, MATLAB, 9 byte

@(A,n)A*n

Yah, ini awal ...

Stewie Griffin
sumber