最初のコードゴルフ十種競技[終了]


48

タスク

すべての競合他社は、次の10のタスクのリストを解決しようとします。

  1. 入力から正の整数nを読み取り、最初のn個の非負整数の立方体の合計を返します。

    入力の1場合、これはを返すはず0です。

  2. 入力から正の整数nを読み取り、nメルセンヌ素数である場合にのみ、真理値を返します。

  3. 入力からn個の整数の空でないリストを読み取り、それらの中央値を返します。

    nが偶数の場合、2つの中央の値のうち小さい方を使用します。

    たとえば、の中央値は[1 4 3 2]です2

  4. 入力から整数(正、負、0)、または基数10または単項の文字列表現を読み取り、先行ゼロなしで入力の桁をnegabinaryに返します(入力0を除く)。

    出力は、任意の便利な方法(数字、配列、文​​字列など)でフォーマットできます。

  1. 戻るpneumonoultramicroscopicsilicovolcanoconiosis

  2. 現在の日付を確認Happy New Year!し、グレゴリオ暦に従って適切な場合に戻ります。

  3. UnicodeブロックCJK Unified Ideographs Extension-A(U + 3400 – U + 4DB5)から64個の一意に割り当てられたコードポイントを擬似ランダムに選択し、対応する文字の文字列を返します。

    可能なすべての文字列は、選択される可能性が同じでなければなりません。

  4. 入力から印刷可能なASCII文字の2つの文字列を読み取り、最初の文字列の文字が2番目の文字列のサブシーケンスを形成する場合にのみ、真理値を返します。

    たとえば、abcaxbxctruthy返す必要がありますとbacaxbxcfalsy返す必要があります。

  1. 入力から整数と整数nの多次元矩形配列を読み取り、すべての整数にnを掛けた修正済み配列を返します。

  1. 以下に示すように、入力から負でない整数nを読み取り、n個の列車ワゴンのチェーンを返します。

    n = 3の出力例:

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

    出力は、例のように見える限り、任意の量の空白で囲むことができます。

明確化

  • 0は正でも負でもありません。

  • 出力では、末尾の空白が常に許可されます。

  • 入力のいくつかの部分は、一貫した便利な順序で読み取られます。

ルール

  1. 同じプログラミング言語で2つの異なるタスクを解決できる答えはありません。1

  2. 個々のタスクごとに、標準の規則が適用されます。

    特に、通常のI / Oデフォルトでプログラムまたは関数を送信できますが、これらの抜け穴を利用することはできません。

    タスク5は本質的に課題であるため、出力のハードコーディングは許可されるだけでなく、予想されるものです。

  3. ユーザーごとに1つの回答のみを投稿する必要があります。各回答には最大1つのソリューションが含まれます。

    次の例のように回答をフォーマットしてください。

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

得点

  1. 解決するすべてのタスクに対して、1つのポイントを獲得します。

    つまり、参加するためにすべてのタスクを解決する必要はありません。

  2. タスクnのソリューションがそのプログラミング言語で最も短い場合、追加のポイントが得られます。

  3. タスクnのソリューションがすべてのプログラミング言語の中で最も短いものである場合、追加のポイントが得られます。

  4. ボーナスポイントは、各タスク言語の組み合わせおよび各タスクに対してそれぞれ1回のみ付与されます。

    いつものように、2つのソリューションのバイトカウントが同じ場合、投稿時間がタイブレーカーです。

    誰かが後であなたをアウトゴルフした場合、他の回答者が獲得したボーナスポイントを失います。

  5. ゴルフの提出、回答からの言語の追加/削除、または2つのタスクに使用される言語の交換ができます。

    誰かが答えを編集するたびに、すべての答えが記録されます。

  6. タスクの言語を変更すると、年功序列は失われます。2

最高スコアの答えが勝ちです。3

タスクごとのリーダーボード

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

リーダーボードの組み合わせ(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

でマークされたタスクXは存在しますが、無効です。

複合リーダーボードは手作業で構築されています。エラーがあれば教えてください。


1 同じ言語の異なるバージョンではない場合、言語は異なるものとしてカウントされるため、JavaScript、Python、TI-BASICは1つだけですが、C、C ++、Octave、MATLABは4つの異なる言語です。

2 タスクを解決した場合はn個の言語使用してLを中にXと同じバイト数と同じ言語でバイト、他の誰かが解き同じタスクを、あなたは言語に変更Mとバックロールあなたの編集、他の回答には、ボーナスポイントを維持します。

3 スコアリングルール1、2、3から得られたポイント数(この順序で)、解決されたすべてのタスクの合計バイト数(低い方が良い)、そして最後に投票集計(高い方が良い)がタイブレーカーとして機能します。


6
明確にするために、この課題は少なくとも10言語を知っている人に限られていますか?私は...友人を求めています...
vijrox

2
@VijayRamamurthy:参加するためにすべてのタスクを解決する必要はありません。そのため、1つのタスクを解決するだけであれば、1つの言語を知っているだけで済みます。
アレックスA.

2
@JoeZ .:ここでは9ホールのチャレンジがありましたが、それらは合計バイト数でエントリーを獲得しました。私の得点がデカトロンの得点に関係しているわけではありませんが、これは別のタイプのチャレンジであることを明確にしたかったのです。
デニス

4
@lolesque:それはゴルフの標準的な挑戦です。ここでの全体のポイントは、タスクごとに異なる言語を使用することです。
デニス

3
@NotthatCharles:グレゴリーに尋ねると、彼は1月1日と言いました。
デニス

回答:


5

タスク1、GolfScript、8バイト

~,{+}*.*

MartinのCJamの答えと同じ考え。


タスク2、QBasic、74 71バイト

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

構文拡張をオフにしてQB64でテストしました。1プログラムの大部分は、2 <= < ごとにmod aを取り、結果を乗算することにより、指定された数が素数であるかどうかをテストします。結果は、数値が素数でない場合は0、それ以外の場合は非ゼロです。最後の行では、ビット単位で2の整数除算を使用して、のバイナリ表現がすべて1 であるかどうか、つまり2 n -1の形式であるかどうかを確認します。これを掛けると、数値がメルセンヌ素数でない場合は0(偽)、そうでない場合はゼロ以外の(真の)値が得られます。はのショートカットです。aiarANDaar?PRINT

私がテストした最大のメルセンヌ素数8191の結果1.#INFは、まだ真実です!(確認のためにIF声明で確認しました。)

1 これはプログラムのセマンティクスを変更しません。上記のコードを標準のDOS QBasicに入力すると、余分なスペースで自動フォーマットされますが、まったく同じように実行されます。


タスク3、Pyth、6バイト

ehc2SQ

stdinからPythonスタイルのリストを読み取ります。ここでの主な魔法はcホップ演算子です:intとリストが与えられると、リストをn個に分割します。だから、c2SQ半分にソートされた入力リストをチョップ。都合の良いことに、長さが奇数の場合、前半が大きいため、中央値は常に前半の最後の要素になります。これがあるeのND hチョップ結果のEAD。


タスク4、CJam、26バイト

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

これは短縮できると思います。

アルゴリズム:

  • 整数を読み取ります。
  • 値が0でないときに行う:
    • abs(i%2)を取る。これは次の数字です(negabit?)。
    • iを-2で除算します。
    • iが非正の場合、結果にabs(i%2)を追加します。これはコーナーケースを修正するためです。3は-1になりますが、-3は1ではなく2になります。
  • 余分な0をドロップし、スタックを配列に収集し、反転して印刷します。

do-whileループであるという事実は、0のケースを処理します。


タスク5、Bash、50バイト

echo pneumonoultramicroscopicsilicovolcanoconiosis

あまり説明しません。


タスク6、Python、78バイト

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

Python 2が必要です。Pythonの連鎖不等式演算子は、ここでうまく利用できます。


タスク7、ActionScript、82バイト

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

ActionScriptはECMAScriptファミリーのメンバーです。このコードにはActionScript 2が必要です。chrバージョン3の代わりに非推奨の関数を使用できるようになったため、コードゴルフにははるかに優れていますString.fromCharCode

出力はコンソールペインにあります:

タスク7のスクリーンショット


タスク8、ピップ、9 19バイト

正規表現ソリューションはまったく機能しなかったため、代わりに文字列操作を使用したソリューションを紹介します。

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

PipのGithubリポジトリ

2つの文字列をコマンドライン引数として受け取ります。場合aサブシーケンスは、正の整数(truthy)を出力します。そうでない場合、結果はnil(偽)になり、出力は生成されません。

説明:

                     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

タスク9、プロローグ(SWI)、68バイト

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

プロローグは通常、コードゴルフではまったく競争力がないので、このソリューションにはかなり満足しています。

リストの入力パラメーター、および数値と出力パラメーターの述語 mを定義します。の定義は三重選言です:LNRm

  • 場合はL可能な統一[H|T]、それに少なくとも1つのアイテムを持つリストです。mそのリストの先頭と末尾を再帰的に呼び出して、結果を再びまとめて、で統一された新しいリストにしRます。
  • Lで統合できる場合は、同様[]に統合R[]ます。
  • それ以外の場合Lは、数値と見なされます。L*Nが計算され、に割り当てられRます。

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

タスク10、C、114 112 106バイト

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

gccUbuntuでテスト済み。t整数の引数を取る関数を定義します。3つのforループを使用して出力し、マクロの悪用により大幅に圧縮されます。バックスペース文字を使用して末尾を消去する~と、かなり奇妙な空白パターンになりますが、The output may be surrounded by any amount of whitespace as long as it looks like in the example.

の実行例t(3)

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

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

残念ながら、タスク8のコードa.cはのサブシーケンスとして識別されabcます。
デニス

@デニスそれ残念です。(しかし、良いキャッチ、ありがとう。)10バイトのコストで修正されました。
DLosc

17

Huzzah、まずすべてのタスクを完了してください!\ o /

タスク1、Perl、32バイト

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

-pフラグ用に+1バイト。解説:Perlは奇妙です。


タスク2、CJam、14バイト

{_mp\)2mL_i=&}

私の最初のCJamプログラム!


タスク3、GolfScript、8バイト

~$.,(2/=

STDIN入力を評価し、ソートし、長さを取得し、デクリメントし、2で除算し、そのインデックスでソートされた配列の項目を取得します。


タスク4、Python、77バイト

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

24(!)バイトを削る@ mbomb007と、さらに11を削る@ Sp3000に感謝します。


タスク5、Java、66バイト

String f(){return"pneumonoultramicroscopicsilicovolcanoconiosis";}

退屈な。ここで詳細な言語をノックアウトして、後でゴルファーの言語のスペースを節約しました。


タスク6、Bash、39バイト

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

について教えてくれた@manatworkに感謝し%jます。その過程で10バイトを削ります。


タスク7、JavaScript、148バイト

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

64個xの文字列を生成し、それらをすべて使用済み文字の配列にない場合、それらの文字のランダムな1つを返すコールバック関数で置き換えます。


タスク8、Rust、130バイト

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}

はい、Rustはゴルフが非常に苦手です。


タスク9、ダチョウ、18バイト

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

バージョン0.7.0。配列を検査し、正規表現を置き換えて数値を乗算されたバージョンに変更し、結果の文字列を再度評価します。


タスク10、Ruby、58バイト

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

"\n"は1文字より長い"{actual newline}"、は1文字より長い$/。@MartinBüttner、さまざまな黒魔術のトリックで{indeterminate but large number}バイトを削り取ってくれてありがとう。


タスク6 – $(…)`…`
マナトワーク

@manatworkありがとう、編集。
ドアノブ

もう一度考えてみると(カフェインの吸収が進行中…)、なぜその長い%Dフォーマットなのでしょうか?[ `date +%j` = 001 ]または((`date +%j`<2))。(date「%j day of year(001..366)」形式を確実にサポートするGNUを想定しています。)
manatwork

@manatworkおお、とてもいい。回答ありがとうございます。
ドアノブ

タスク4は、((num + 0xAAAAAAAA)^ 0xAAAAAAAA)algを使用して短縮できます。
ジェイコブ

15

タスク1、3var、14 13バイト

'><k*>#aa/>sp

3varのEsolang wikiページ

'                  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

コードポイントを介して入力を取得します。たとえば、スペースは32です。

ありがたいことに、式を実装するために必要なすべての操作n^2 (n-1)^2 / 4は単一の文字(デクリメント、乗算、および2乗)ですが、B2(reset-increment-increment)に設定するには3バイトかかります。


タスク2、網膜、38 33バイト

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

RetinaのGithubリポジトリ

各行は別々のファイルに入れられますが、-sフラグを使用して上記をそのままテストできます(<empty>何も置き換えないでください)。入力は1111111、7などの1の単項でなければなりません。

各正規表現の置換(行のペアで指定)は次のとおりです。

  1. 前面に余分な1をタックします。
  2. フォームの何かを交換する21 + compositeまたはnot power of 2何もありません。

これにより、1メルセンヌ素数に余分な数が追加されますが、他のすべての数は消去されます。


タスク3、ラケット、71バイト

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

Lispに似た言語は言葉が長すぎます。実行例:

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

タスク4、> <>、31バイト

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

> <>のEsolang wikiページ

上記は28バイト-vで、Pythonインタープリターにさらに3バイトのフラグが必要です。たとえば、次のように実行します

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

ここでの> <>の良いところは、モジュロと除算を使用して1つずつ数字を計算できることです。これは数字を逆の順序で与え、スタックから印刷するのに最適です。


タスク5、括弧付き、1448 1386バイト

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

ParentheticのGithubリポジトリ

私はこれに対してCJamの答えを持っていますが、それは文字列自体よりも短いですが、私はそれを使用できないので、私は反対に行くと思いました。

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

対応するLispのようなコードは次のとおりです。

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

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

どうやらそれはオーバーライドに大丈夫だったdefineの命名によりgとして()()バイトをたくさん保存されています、。


タスク6、CJam、26バイト

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

ことをチェック[month day]現地時間アレイの一部が以下です[1, 2]


タスク7、Python、73バイト

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

単純なPython 3実装です。


タスク8、プレリュード、46 41バイト

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

PreludeのEsolang wikiページ

これはうまくいくと思います-おそらくまだゴルフ可能ですが、プレリュードで重要なゴルフをするのは初めてです。入力形式は<needle>NUL<haystack>NULです0x00。これがで最適に動作しNUMERIC_OUTPUT = Trueているが、それの出力を作ってあげることから、Pythonインタプリタに1または0必要に応じて。

Preludeを選択したのは、このタスクに非常に役立つ2つのプロパティがあるためです。

  • それはスタックベースであるため、最初に針で読み取り、次に一度に1文字ずつhaystackを処理できます。
  • Preludeのスタックの下部には0の無限の数があるため、針が文字を使い果たした場合に対処する必要はありません。

PreludeにNOT演算子がある場合、これはさらに改善されていました。

内訳は次のとおりです。

?(?)#    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

(@MartinBüttnerのおかげで5バイト)


タスク9、Mathematica、4バイト

#2#&

のようなもの2 {{0, 1}, {1, 0}}はMathematicaの暗黙的な乗算なので、これは単に引数を並べて配置するだけです。

で述べたように@MartinButtner@alephalpha1##&別の4バイトの答えです。説明については前者を参照してください。


タスク10、レール、246 237バイト

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

RailのEsolang wikiページ

Railで電車関連のタスクを実行する機会を逃すことはできませんでした:)ホワイトスペースはかなりゴルファーに見えますが、3行の分岐ではコンパクトにするのに少し手間がかかります。

入力はSTDIN経由の整数ですが、EOFが必要です。左上の部分

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

EOFではなく入力を整数に変換するatoiループです(e命令によってチェックされます)。

f最後の3行の関数は、で区切られx, y, nた文字列x n時間を取り、出力しますy。関数は再帰的であり、nゼロになるまで毎回1ずつ減少します。f行ごとに異なる文字列を指定して、3回呼び出されます。奇妙なことに、レールでは変数名を空にすることができるため、数バイト節約できます。

残念なことに、ほとんどのバイトはから取得されます。これ(!x!)は、スタックの最上部をポップして変数xに割り当て、および(x)xスタックにプッシュします。Railには重複する演算子がないため、これが必要(!x!)(x)(x)です。スタックの最上部をコピーする唯一の方法です。


タスク2がrsにあった場合、2バイト節約でき、単項式ではなく数字を取るのに14バイトしかかかりません。;)
kirbyfan64sos

ラケットを見たとき、括弧が好きだと思った。しかしかっこ
...-bunyaCloven

13

タスク1、CJam、7バイト

q~,:+_*

このための(おそらく)最適なCJamソリューションを取得したかったのです。最初のn個のキューブの合計がn番目の三角形の数の2乗であり、それ自体が最初のn個の整数の合計であるという事実を利用します

ここでテストしてください。


タスク4、核分裂、173 88 78 69 68バイト

FissionのGitHubリポジトリ。

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

2番目のかなり複雑な核分裂プログラム。:)

入力形式は少し変です。負の入力をサポートするために、最初の文字は、いずれかであることが予想される+か、-記号を示すために。2番目の文字のバイト値は、入力の大きさです(Fissionは10進整数をネイティブに読み取ることができないため)。必要に応じ111+o、STDINで渡します。そして、あなたがそれ-56を渡したいなら-8。代わりに+-、あなたは、それぞれ、低いまたは高い文字コードで任意の文字を使用することができます。これは、のようなものに合格するに役立ちます-n(これはあなたのecho、例えば、などかもしれない御馳走引数として)0n

正数のネガバイナリ表現を見つける方法を見てみましょう。最下位ビットから最上位ビットまでの数値を計算します(これらのビットをスタックにプッシュし、最後にすべて印刷して、正しい順序に並べます)。その場合、最初の数字は数字の単なるパリティであり、処理を続行するために数字を2で整数除算します。次の桁は負の値(値-2)になりましたが、通常の2進数で2ビットが設定されると、このビットが設定されることに注意してください。唯一の違いは、正の高い数値で-2に対抗する必要があることです。だから私たちがやることはこれです:

  • パリティを再度決定します-これが次のネガビットです-そして、以前のように2で除算します。
  • その数字であった場合1、我々はカウンター法(negabitとビットとの間の差である負のビットをするために1残回数をインクリメントの次のより上位のビットの値)。

条件付きここでいずれかを添加すること数を丸めると同等であることを通知からのコードの結果の大きな簡略化アップ分割整数(廃棄ビットが1であれば、我々は、1整数分周結果をインクリメント)します。

その後、次のビットは再び正の値になり、正常に判断できるようになります。つまり、一度に2ビットを計算し、切り上げと切り捨てを交互に行うループが必要ですが、切り捨てから始めるためにループを真ん中に入れたいということです。

負の整数をどのように処理できますか?問題は、質量は常に負ではないため、Fissionは負の整数に対して実際に任意の算術演算を実行できないことです。そのため、マグニチュードを操作したり、どこか他の場所でサインを追跡するなど、本当に複雑なことをしなければなりません。ただし、負の数の負の表現は、関連する正の数に基づいて計算できます。

場合nは負である、のnegabinary表現計算N / 2を(四捨五入アップ)とのパリティ付加nは

これはまさに2ビットループの最初のステップです。したがって、符号が負の場合、ループを別のポイントで開始するだけです。

173個の元のバイトによる節約の大部分は、これらの洞察から得られたもので、3つのパリティチェックと2つのセクションループを1つのパリティチェックで1つのループに圧縮できました。

すべてのコードを詳細に説明すると、この投稿は長すぎますが、制御フローの大まかなレイアウトを示すためにいくつかのセクションを指摘し、Fissionリファレンスで詳細をパズルで解きます。

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

から始まりD、これはエネルギーへの符号ビットを読み取り、最終的に[(右へ)終わる原子の質量への大きさを読み取ります。この符号ビットは、パリティチェックを通過するたびに交互に切り替わり、ループ入力の半分を切り捨てたままにするか、切り上げたままにするかを決定します。

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

これは、個々のビットを計算し、正しい半分を次の反復に供給するループです。SそしてJ、現在の符号ビットに基づいて、右半分のコピーを作成するために使用されているXのは、コピーを行います。>右上隅には、スタックに送信される実際のビットを計算しK、後で検索します。Fissionに興味があるなら、右上隅のレイアウトはかなり気の利いたものであり、間違いなく詳細に勉強する価値があります。

%0よりも大きいのである限りループに番号をフィードバックするスイッチです。

    O


 M~\
 K/W%

 \{\/
0'A Y

数値が0に達すると、代わりに反映されます。これにより、スタックからビットを取得し、文字コードに追加して、0で出力する別のループが開始されますO。スタックが空になると、プログラムは終了します。これは、コントロールアトムがスタックにプッシュされてしまうためです(その後、移動するアトムはなくなります)。


タスク5、プレリュード、219 179 96バイト

PreludeのEsolangsページ。

Preludeのスタックスニペットインタープリター。

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

これは、3つの音声を持つ標準的な手作りの固定出力Preludeプログラムとして始まりました。Sp3000とのいくつかのチャットの後、私は単一の音声を試すことにしました。古い文字を再利用する方がはるかに簡単であるため、これは非常にうまく機能することが判明しました。その後、デニスからいくつかのヒントが得られ、現在のバージョンが見つかりました。アイデアは、文字からのすべてのオフセットをh単一の音声のスタックに逆順でプッシュし、ループで一度に1つずつ印刷するというものです。文字列にhないためh(これは重要です-さもなければ0オフセットがループを終了するため)、2桁の負のオフセットに関してオフセットのエンコードを最小化するために選択されます。

オフセットエンコーディングは、このCJamスクリプトで生成されました


タスク8、Mathematica、28バイト

LongestCommonSequence@##==#&

組み込みのイェーイ。(Mathematicaの命名は、ここに少し奇妙です... LongestCommonSubsequence最長共通見つけた部分文字列をしながら、LongestCommonSequence発見最長共通部分列。)


タスク9、J、1バイト

*

APLとKの回答と同じですが、Jをまだ誰も受け入れていないようです。


タスク10、Retina、67 60バイト

Retina用のGitHubリポジトリ。

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

各行は個別のファイルに入れ<LF>られ、改行文字に置き換えられ<empty>、空のファイルである必要があります。このすべてを単一のファイルに入れて-sオプションを使用することもできますが、それでは<LF>まだ改行文字を埋め込むことができません。あなたは次のようなことをすることでそれをエミュレートできます

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

上記の例が示すように、入力は単項であることが期待されています。コードの考え方は、単項入力の3つのコピー(マイナス1)を作成し、それぞれに対応する行のコピーを作成することです。次に、1すべての1sがなくなるまで、aの前の最後の9文字を繰り返し複製し、必要に応じて行を繰り返します。最後に、無関係な末尾を削除し~ます。


10

ええ、私は私が推測するカップルから始めます。初めてのゴルフ。

タスク1、Python、38 21バイト

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

xまでのすべてのキューブのリストを合計します。xnorのおかげで式が変更されました

タスク2、TI-Basic 89、244バイト

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

これについては100%確実ではありませんが、電卓用の新しい電池を見つけたらテストします。isPrimeは組み込み、ipartは整数部(2.3-> 2)

タスク3、Perl、45 34バイト

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

perl file 1 2 3 4-> 2. @nutkiのおかげで数バイトを保存しました。変数に保存してから変数を印刷するのではなく、印刷します。

タスク4、Ruby、43 40バイト

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

少なくとも1.9で動作しますが、1.8については知りません。バイナリでは、「10」* 16(または2863311530)に数字を加えたもので、その10101010 ...を含むxorは負のバイナリです。引用符付きの文字列表現を出力します(3-> 111ではなく3-> "111")。xをより少ない文字数で書く数学が見つかりません。

タスク5、マルボルジ、682 354バイト

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

ここでオンラインテストするこれは、これから先ほど短いと思います。私はできる限りゴルフをしました。300バイトを節約しました。

タスク6、bash、62 50 40バイト

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

別の投稿から%jについて見つけました。

タスク10、Befunge-98、121バイト

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

befunge-98に変更されました。古いのはBefunge-93、227 157 147バイトでした。Haskellで書かれたFungiをテストに使用しました。「do multiple times k」を使用し、 'で単一文字をスタックに追加しました。私はそれが110以下にゴルフできると感じていますが、私はすでにこれにあまりにも多くの時間を費やしました...


@Dennis、メインの投稿で質問できないので、ここで質問します。タスク3のスペース区切り入力は可能ですか?[]にはありません。
ジェイコブ

ニーズに合ったものなら何でも。
デニス

1
あなたはとキューブの合計を短縮することができますなどlambda n:(n*n-n)**2/4
XNOR

0=fPart(expression) rather than TI-89 BASIC回答でiPart(expression)= expression` を使用できます。
リルトシアスト

1
Python 2/3のようなものについて話すとき、その議論はうまく機能しないと思います。例えば、より良いSTRよりも、 'N'作品(n)が2で、しかし3の仕事は、私は、現時点では他の例を考えることはできませんしません、私はより多くのことbefungeの答えゴルフに関わるよ:pは
ジェイコブ

9

まず、タスク6は技術的にはカウントされませuncを1時間前にアップロードしました。しかし、私は今朝ほとんどアップロードしましたが、最初にテストスイートを作成することにしました。馬鹿。

とにかく、ここに行きます!

ほとんどのunc事柄は意図的に後方であるため、&&実際にはそうであることに注意してください。そのため||、一部の操作は奇妙に見えます(たとえば-、キューブの計算に使用)。

タスク1、Haskell、21バイト

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

タスク2、Hy、135バイト

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

タスク3、ダーツ、37バイト

初めてのダーツ機能!

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

タスク5、INTERCAL、1047バイト

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

タスク6、unc、157バイト

!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#']:>>

タスク8、rs、42バイト

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

ライブデモ。

タスク10、Pyth、46バイト

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

ライブデモ。


@デニスおっと!一定!
kirbyfan64sos

1
ええと、私はuncを知りませんが、!includesのいずれかが必要ないことは確かです。しかし、どれが完全にわからない。
デニス

@Dennis最初のインクルードはstdio.h、2番目のインクルードはですtime.h。両方が必要です。
kirbyfan64sos

uncCコードのコンパイルには何を使用しますか?GCCはなしでも問題なく動作し stdio.hます。わからないtime.h
デニス

@Dennis uncにはセットコンパイラがありません。Cコードを出力するだけです。自分でコンパイルする必要があります。ただし、それ理にかなっています。後で確認します。
kirbyfan64sos

8

タスク1、APL、7バイト

+/3*⍨⍳⎕

ngn / aplを使用してオンラインで試すことができますが、デフォルトでインデックスの原点が0であるAPL実装で動作します。

これは、累乗演算子()に引数を⍳⎕代入()することにより、0から入力(-1)までの各整数を立方体化します*。結果のベクトルは加算(+/)によって削減され、スカラーが返されます。


タスク2、ジュリア、42バイト

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

これは、入力として整数として受け入れ、ブール値を返す匿名関数を作成します。呼び出すには、名前を付けf=n->...ます。

最初に、Juliaの組み込み関数を使用して、素数であるisprimeかどうかを確認しnます。そうであれば、それがlog2(n+1)整数であることを確認します。もしそうなら、いくつかのnように書くことができ、したがってメルセンヌ素数です。2^k-1kn


タスク3、ELI、19バイト

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

これによりf、入力ベクトルの中央値を返すモナドが作成されます。

Ungolfed +説明:

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

例:

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

タスク4、オクターブ、39バイト

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

これにより、整数を入力として受け入れ、関連するネガバイナリ文字列を返す関数ハンドルが作成されます。呼び出すには、たとえば名前を付けてf=@...、で実行しfeval(f, <input>)ます。

オンラインで試すことができます


タスク5、CJam、47バイト

"pneumonoultramicroscopicsilicovolcanoconiosis"

文字列は単にSTDOUTに出力されます。あなたがそんなに傾いていると感じたら、オンラインで試してみることができます。


タスク6、Windowsバッチ、46バイト

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

変数%date%には、フォームの現在の日付が含まれますThu 06/25/2015。最初の4文字をスキップした後、長さ5のサブストリングを取得することにより、月と日を選択できます%date:~4,5%。そこから1月1日かどうかを確認し、そうであればHappy New Yearと言います。


タスク7、Pyth、26バイト

=Gr13312 19895FNU64pC.(.SG

まずG、13312〜19894の範囲に割り当てます。次に、64回ループし、各反復でシャッフルG.SG)し、最後の要素を削除して返し(.()、その文字表現(pC)を出力します。

オンラインで試すことができます


タスク8、Ruby、36バイト

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

これは、関数定義f二つの文字列受け入れaba内検索する文字列ですb

の文字を除くすべてがusing aから削除され、結果に正確にusing が含まれているかどうかがチェックされます。これは、文字列が見つからない場合に返されるため、with を使用してブール値を取得できます。b.tr()a[]nil!.nil?


タスク9、R、16バイト

function(x,n)n*x

これにより、あらゆる種類の配列または行列xと整数を受け入れnxbyの各要素を乗算する名前のない関数オブジェクトが作成されnます。必要に応じて、オンラインで試すことができます


タスク10、Python 3、92バイト

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

とても簡単です。オンラインで試すことができます


APLの答えは7バイトではありません。これは、より高い範囲に3つのUnicode文字があるためです。
トム

6
@Tom:すべての回答で最も便利なエンコーディングを選択できます。でAPLのコードページ、1つの文字は1バイトです。
デニス

あなたがそんなに傾いていると感じたらオンラインで試すことができます :-D
ルイス・メンドー

7

タスク1、> <>、10 + 3 = 13バイト

::*-:*4,n;

フラグを使用して公式のPythonインタープリターを使用してこれを実行します-v(3バイトのコストで)。この正方形量(n - n*n)によって、および除算4もちろん二乗に相当し、(n*n - n)そして割ます4

タスク2、GAP、63 62バイト

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

(逆に平等を記述することでスペースを節約しました。)

タスク3、R、43 39バイト

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

素晴らしい改善をしてくれたPlannapusに感謝します!

タスク4、ピート、155 135 115 5 * 19 = 95 codels

ここに画像の説明を入力してください

このオンラインインタープリターを使用し、コードサイズ13でテストします。または、ご希望のインタープリターを使用します。ご希望のインタープリターがある場合はお知らせください。

0入力用に空の文字列ではなく出力するの0は不便でした。私はif-thenを最初の近くで使用して、このケースを処理しました。次に、非ゼロの場合に数字を計算するwhileループ、最後にスタックから数字を出力するための最後の別のwhileループ。

非常に役立つコメントをしてくれたSp3000に感謝します。

タスク5、Lua、52バイト

print"pneumonoultramicroscopicsilicovolcanoconiosis"

ここで試してみることができます

タスク6、乳液、157の 139 136 127 128バイト

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

日と月の積がの場合、1メッセージを印刷します。それ以外の場合は何もありません。(元旦はこの設計に特に便利です。探している出力はなので1、必要なorステートメントは1つだけですn。th orステートメントは値の動作を指定しますn。)

注:私の以前のバージョンには、改行がありませんでしたが、これは間違いでした。(私はこの機能をテストしようとしましたが、実際に適切にテストするには時間がかかるかもしれません...)

私の元のバージョンcalcでは、現在のバージョンよりもはるかに便利なパッケージを使用していました。「実生活」のために心に留めておくべきこと!

タスク7、Ruby、62バイト

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

タスク8、JavaScript、78バイト

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

l部分文字列かどうかをテストする再帰的なソリューションmlが空の場合、!l結果が返されtrue、関数が終了します。(この場合、l[0]は未定義ですが、JavaScriptはそれで問題ありません。)それ以外の場合、l[0]inの最初のインスタンスを探しますm。それが見つからない場合は、m.indexOf(l[0])その結果-1となるようuに結果0と機能を終了します。

それ以外の場合はl、の最初のuエントリとの最初のエントリを取り除き、mチェックを続けます。

タスク9、Python、72 60バイト

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

「最下位レベル」にドリルダウンしaます。これはリストではなく、単なる整数であり、乗算を実行します。

12バイト節約してくれたDennisに感謝します!

タスク10、Groovy、81バイト

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

ここで試してみてください。私はもともと.join()、文字列にPythonのメソッドのようなものを実装しようとしました。これは、特定の「リンク文字列」と一緒に文字列を組み合わせます(鉄道車両間のリンクなど)。しかし、それは節約したよりもはるかに費用がかかります。

これらのさまざまな言語で受け入れられる答えの慣習に違反していないことを望みますが、もしあれば教えてください。

素晴らしい挑戦をしてくれたデニスに感謝します!


except:return n*aタスク9のために数バイトを節約します。タスク1の場合、-vフラグを1バイトとしてカウントします。
デニス

@Dennis このメタ投稿を参照してください。ただし、このメタ投稿では、おそらく-vフラグを置き換えることができますi(ただし、テストを容易にするために、両方のバージョンについて言及した方が良いと思います)。
Sp3000

@デニス、あなたのスマートな改善に感謝します!
-mathmandan

1
3つのバイトは、(空間、上記メタポストによって正しいです-v)。i命令を介して入力をコードポイントとして取り込むオプションがあることを意味しました。
Sp3000

1
ところで、#4の場合、負のモジュロはそれほど奇妙ではありません-言語ごとに異なります(たとえば、Javaはメモリからそれを行います)。スタック全体を出力する1つの方法は、スタックの一番下に何かが出力に含まれないことを確認し、その特殊な文字ではない間は文字を出力し続けることです。また、PietCreatorもあります。
Sp3000

6

タスク1、Pyth、5バイト

s^R3Q

stdinから番号を取得します。@Jakubeが役に立たないことを指摘してくれてありがとうU

タスク6、javascript、56バイト

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

タスク7、CJam、16バイト

6581,mr64<'㐀f+

範囲を生成し、シャッフルし、最初の64を選択し、開始値の追加と文字への変換をマッピングします。14文字、16バイト。

タスク8、オクターブ、23バイト

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

無名関数を定義します。

タスク5、PHP、45バイト

pneumonoultramicroscopicsilicovolcanoconiosis

圧縮せず、印刷するだけです。

タスク9、APL 1バイト

 ×

K回答と同じです。


@デニス私もそれを知りません-私はただグーグルでテストして、この答えをテストせずにまとめました:)。エミュレータでテストしてみます。
マルティセン

@Dennisおっしゃるとおり、それは中間2を平均して、それを取り去ります。
マルティセン

1
あなたはそのスペースで何をしてい.slice(4, 10)ますか?
LegionMammal978

@Dennis derrrp。ごめんなさい。
マルティセン

1
「an」で終わる略語は1か月しかないため、テスト時にJを省略できます。(それを行うにはかなり短くなります/an 01/.test(Date())。)
NinjaBearMonkey

6

タスク1、R、21 19バイト

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

かなり簡単です。STDINからの入力。

タスク2、Perl、40 66バイト

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

素数チェッカーを追加(Abigails素数チェッカー正規表現)

タスク3、PARI / GP、24 22バイト

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

初めてこれに触れました。もう少し学ぶ必要があるかもしれません。

タスク4、T-SQL、235バイト

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

再帰CTEを使用したインラインテーブル関数。非常に大きいが、楽しい。

使用するには

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

タスク5、GAP、48バイト

"pneumonoultramicroscopicsilicovolcanoconiosis";

タスク6、Excel、51 48バイト

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

3バイトの@Bondに感謝します。

タスク7、パイソン2.6 98の 93 85バイト

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

Pythonで何かをやろうとしたのはこれが初めてなので、もっといいかもしれません。すばらしいヒントをありがとう@Dennisと@Jacob

タスク8、TCL、57バイト

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

空白を削除するとこれが殺されるのは残念

タスク9、パイク、53バイト

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

乗算された配列を返す関数

タスク10、Powershell、88バイト

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

Powershell関数。私はそれを少し短くすることができると思いますが、ここでは現時点です。

そして最終的に終了しました:)


タスク6で4バイトを保存できます=IF(TEXT(NOW(),"md")="11","Happy New Year!","")
ボンド

@Bondありがとうございます
-MickyT

私もPythonを知りませんが、動作するl[:63]はず(13312,19894)で、16進定数(および合計)よりも短くなっています。
デニス

@デニスありがとうそれを試して変更します
MickyT

ので@Dennis私は高い値として19893を選んだrange(19892,0x4DB5+1)私に与えた[19892, 19893]
MickyTを

4

タスク2、J、10バイト

1&p:*/@,#:

入力がバイナリ表現の素数である場合、ブール値0または1を付加してから、積を取ります。Jの現在のバージョンで動作します。


タスク5、HTML、45バイト

pneumonoultramicroscopicsilicovolcanoconiosis

タスク6、魚、53バイト

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

bashの回答に基づきます。


タスク8、APL、12バイト

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

これは関数式です。大きい文字列で見つかった文字の順序を、ソートされた場合に予想される文字の順序と比較します。


タスク9、K、1バイト

*

どのバージョンでも動作するはずです。算術演算は配列に分散します。


コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
マーティンエンダー

2
タスク8のコードはで機能しませんabc caxbxc
jimmy23013

4

タスク1、Ruby、40バイト

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

Rubyで何かを書いたのは初めて。ruby 1.8.7でテスト済み。


タスク2、R、50バイト

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

を計算しp、整数かどうか、nとpが素数かどうかを確認します。


タスク5、PostgreSQL、54バイト

SELECT'pneumonoultramicroscopicsilicovolcanoconiosis';

タスク6、Lua、55バイト

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

タスク8、Python、65バイト

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

使用法:

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

タスク10、ジュリア、73バイト

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

@AlexAに感謝します。このコードの短縮を支援してくれました!出力の例:

julia> f(0)




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

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

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

タスク2には、log2
MickyT

私はあなたのジュリア・タスク10には現在86のバイトを数えるしかし、あなたはラムダ関数を使って、81にそれを得ることができる(すなわち置き換えf(n)=n->)、変化1:(9*n-1)するだけに1:9n-1
アレックスA.

\n習慣により、1バイトとしてカウントしました。
プランナパス

ではなく、(" "*"_"^6*" ")^n使用できます" ______ "^n(同様に、| |パーツに対して)。70バイト:n->print(" ______ "^n*"\n"*"| | "^n*"\n"*(" ()--() ~"^n)[1:9n-1])。(ただし、バーの間の空白は表示されません)
アレックスA.

3

タスク1、Haskell、17バイト

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

タスク2、Mathematica、30バイト

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

タスク3、JavaScript、46バイト

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

タスク5、MATLAB、47バイト

'pneumonoultramicroscopicsilicovolcanoconiosis'

タスク6、Ruby、56バイト

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

タスク7、Python、106バイト(インデント付き\t

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

の単純な使用法はここでlist(set(s))は機能しないことに注意してください。これにより、リストメンバーの順序が変更されるため、すべての可能な文字列のスペースに不均一な確率分布が発生します。



@Dennis re task 7:ポイント1に同意すると、機会があればいつでも修正されます。REPLに関して、それに対するルールはありますか?
サラン

罰金、すべて修正されました。
サラン

1のために、おそらくあなたはできます(x*x-x)^2/4か?
xnor

面倒なことに、JavaScriptのデフォルトのソート関数は、比較時に数値を文字列に変換するため、すべての数値の最初の桁のみを比較します。したがって、[2,3,10]で失敗します。
NinjaBearMonkey

1
7では、実際にif c not in s:s+=cすべてを1行に配置して、数文字を節約できます。また、1文字短い(および0x4db5の場合も同様)0x3400に置き換えることができます13312。最後に、文字数は変更されませんが、タブのインデントが気に入らない場合は、代わりに単一のスペースでインデントできます。
mathmandan

3

タスク1、Haskell、15バイト

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

タスク2、ジュリア、28バイト

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

タスク3、オクターブ、30バイト

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

タスク5、Yacas、45バイト

pneumonoultramicroscopicsilicovolcanoconiosis

タスク6、Mathematica、46バイト

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

タスク9、PARI / GP、10バイト

(n,a)->n*a

3

タスク3、クリップ、13バイト

gHk[tivt}l`sk

別のバージョン:

gHkci`v``l`sk

`あまりにも多くの費用がかかるように見えました。

タスク4、KSFTgolf、16バイト

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

通訳はこちらです。私は何をしているのかわかりません...ネガバイナリを出力してクラッシュします。

インタープリターにバグがあります。または、組み込みのベース変換を使用して12バイトまでゴルフすることができます(ただし、正の整数でのみ機能します)。

2*02-ba'Z=;x

元のCJamバージョン:

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

Pip、Ostrich、Clip、Burlesqueを試して、ネガバイナリが組み込まれたエゾランがあるかどうかを調べました。どれも機能しませんでした。KSFTgolfはを使用しましたnumpy。これは、ベースが負の場合、何らかの便利な奇妙な動作をしているように見えました。しかし、非正数で動作させるのは簡単ではありません。

タスク7、CJam、15バイト

'䶶,DAm<>mr64<

タスク8、APL、21バイト

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

オンラインでお試しください。


Lol @「自分が何をしているかわからない」
アレックスA.

これについての質問はあまり明確ではありませんでしたが、私の意図はタスク4のコードが入力0を処理することでした。組み込みのベース変換のないバージョンはそれをうまく処理するようです。
デニス

@デニス修正。しかし、単項の使用を選択した場合はどうなりますか?
jimmy23013

いくつかの固定オフセットまたは2の補数を使用すると機能します。私はまた、単項数が続くサインを受け入れます。
デニス

3

タスク2、x86 masm、40バイト

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

(ヘッダー、MessageBoxなどを除く-関連するバイトのみ)

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

タスク3、C、136バイト

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

使用してコンパイル gcc -o Prime main.c


タスク10、C ++、478バイト

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

使用してコンパイル g++ -o Trucks main.cpp

CおよびC ++は短縮できますが、コンパイラエラーが追加されます。正確なルールがわからないので、コンパイラエラーなしでコードを残そうとしました。


3
PPCGへようこそ!コンパイラが使用可能なバイナリを生成する限り、コンパイラの警告は安全に無視できます。
デニス

2
コードゴルフでは、Cコンパイラは、警告を生成しないことでさらにゴルフができることを警告します。
コミンテルン

警告を無視してください-そして、あなたが望むだけのメモリを自由にリークしてください。:
トビー・スペイト

3

タスク1、Python、35バイト

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

タスク3、CJam、9バイト

q~$_,(2/=

タスク4、JavaScript、55 53バイト

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

タスク5、Pyth、46バイト

"pneumonoultramicroscopicsilicovolcanoconiosis

タスク6、C#、65バイト

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

2

タスク1、jq、24バイト

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

タスク6、PostgreSQL、54バイト

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

2

タスク1、Cjam、7バイト

q~,:+_*

編集:ちょうどマーティンが私の前にこれを投稿したことに気づいた。私は何か他のものを試してみます...

タスク3、Python、30バイト

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

Python 2。

タスク5、///、45バイト

pneumonoultramicroscopicsilicovolcanoconiosis

///は、/文字なしで何かをエコーし​​ます。

タスク7、Pyth、19バイト

s>64.SmC+13312d6582

プログラム。数学をいじったら教えてください。ここで試してみてください

タスク9、オクターブ、9バイト

@(a,n)a*n

無名関数ハンドル。Octaveは、マトリックス*スカラーでこれを自動的に行います。


タスク7では、一意である必要があります。
マルティセン

ええ、pythには.Sシャッフルがあり、のs代わりにum を使用できますjk
マルティセン

2

それらすべてを試す時間はありませんが、ここから始めましょう

タスク1、DC、8バイト

d1+*d*4/

dc慣例に従って、スタックの最上部への入出力。

タスク5、Emacs Lisp、46バイト

'pneumonoultramicroscopicsilicovolcanoconiosis

ルールの乱用:

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

Perlで圧縮形式から解凍することで管理できた最高の55は次のとおりです。

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

(上記の印刷できない文字はSEによって文字化けしますが、実際には私の答えではないため、修正していません)

タスク6、SQL、54バイト

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

1月の最初の10日間はこのあいさつに「適切な」日と考えていますが、好みに合わせて調整できます。now() LIKE構築物は、一日の年で抽出するよりも短くて動作しますDATE_FORMAT(now(),'%j')

タスク10、sed、58バイト

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

単項入力。


strstrサブシーケンスではなくサブストリングの検索。タスク5はkolmogorov-complexityなので、辞書から単語を取得するのは賢いかもしれませんが、許可されていません。
デニス

ありがとう。サブシーケンスを誤解しました。別のタスク5を実行しますが、非常に退屈です。
トビースパイト

タスク5には興味深い解決策がいくつかありますが、これまでに短いものを投稿した人はいません。
デニス

1

タスク5、マリオゴルフ、50バイト

これは私がしばらくの間開発した言語でした。

現在のバージョンには、このチャレンジを実行できる十分な機能があります。

Y|<pneumonoultramicroscopicsilicovolcanoconiosis|O

http://htmlpreview.github.io/?https://raw.githubusercontent.com/ismael-miguel/mariogolf/master/js/testpage.html#c:Y|<pneumonoultramicroscopicsilicovolcanoconiosis|Oでオンラインで試すことができます。

現在、開発は中止されており、実装は不完全です。

最新のコミットは2015年3月13日でした。

タスク6、PHP、37バイト

これは本当に簡単で楽しいです!

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

タスク10、Javascript、121バイト

うん、そんなにゴルフじゃない...

しかし、それは仕事をします!

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

それを試してみてください:

"出力で始まるため、コードはスタックスニペットでうまく表示されません。それを補うために、アディショナルスペースが追加されました。

元のコードは問題なくChromeのコンソールで実行でき、出力は期待どおりです。


@Dennisありがとうございます!タスク5を読み間違えています。他のタスクをどのように実装するかまだ検討中ですが、苦労しています。
イスマエルミゲル

1
あなたはおよそよろしいですかdate(dM)?ここでは、「25Jun」を返します。(ロケールはen_USに設定)「d」と「m」は幅2にパディングされた値0を返すため、「j」と「n」の方が適切な場合があります。
manatwork

@manatworkあなたは正しいです。それは私の間違いでした。あなたがそれを発見したこと。
イスマエルミゲル


1

タスク1、オクターブ、15バイト

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

編集:これを追加したと思ったが、保存するのを忘れたようだ:これは sum(1^3+2^3+3^3+...+n^3) = sum(1+2+3+...+n)^2 = [n*(n+1)/2]^2

タスク3、Javascript、24バイト

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

1

さて、簡単なことから始めましょう。

タスク5、ASP、45バイト

pneumonoultramicroscopicsilicovolcanoconiosis

タスク6、JavaScript、46バイト

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

1

タスク1、VBA、126バイト

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

VBAでゴルフをする方法がわかりません。単一のスペースを入力しなかったため、VBAは自動的に空白を挿入します。=f(5)Excelのセルに100が表示されます。

タスク2、オクターブ、32バイト

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

タスク5、Golfscript、47バイト

"pneumonoultramicroscopicsilicovolcanoconiosis"

タスク9、MATLAB、9バイト

@(A,n)A*n

まあ、それは始まりです...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.