アウトゴルフできますか?(強盗セクション)


43

強盗セクション

警官のセクションはここにあります

チャレンジ

あなたの仕事は、同じ言語同じバージョン(たとえば、Python 3.5Python 3.4)で警官の提出をアウトゴルフすることです。これは許可されていません。バイト単位の長さが元のサブミッションより短い場合、サブミッションはアウトゴルフされます。提出物をクラックするために、少なくとも1バイトだけゴルフをする必要があります。たとえば、タスクがnを実行することであり、提出が次の場合:

print(2*input())

次の操作を行うことにより、警官を追い抜くことができます。

print 2*input()

またはこれも(ラムダが許可されているため):

lambda x:2*x

これを次のヘッダーで投稿します。

##{language name}, <s>{prev byte count}</s> {byte count}, {cop's submission + link}

例えば:

パイソン2、16 12バイト、アドナン(提出に+リンク)

lambda x:2*x

A005843を計算します(オフセット= 0)。

その場合、提出物をクラックしました。

得点

最も多くの提出物をクラックした人が勝者です。

ルール

  • クラックの提出は、警官の提出と同じ言語である必要があります。
  • 同じ入力が同じ出力になります(a(2)= 4は4のままです)。
  • Pythonなどの言語の場合、その言語に標準で含まれているライブラリをインポートできます。(したがって、numpy / sympyなどはありません)
  • 入力と出力は両方とも10進数です(基数10)。

注意

このチャレンジは終了しました。Robbersセクションの勝者はfeersumです。CnRの最終スコアは以下のとおりです。

  • feersum16クラック
  • デニス12クラック
  • 漏れた修道女6クラック
  • Lynn4つの亀裂
  • マイル3亀裂
  • マーティン・エンダー2クラック
  • エミグナ2亀裂
  • jimmy230131クラック
  • SP30001クラック
  • ランダラ1亀裂
  • alephalpha1クラック
  • nimi1クラック
  • 破壊可能なスイカ1クラック
  • ドムヘイスティングス1クラック

回答:


8

チェダー、7 6バイト、ダウンゴート

(<<)&1

これはうまくいくようですが、言語を正しく理解していない可能性が常にあります。


また、(**)&2。試しましたが2&(**)失敗しました。:(
デニス

@Dennis (**)&2は私には問題なく動作します:/しかし、これも動作します。
ダウンゴート

14

ゼリー54 バイトジョージV.ウィリアムズ

RÆḊḞ

ここで試してみてください。

隠された機能!

正しく覚えていれば、ÆḊ(A)= sqrt(det(AA T))はnです!回数N次元ルベーグ測度シンプレックス N入力点及びm次元空間における原点によって形成されます。n = 1の場合、ユークリッド距離に縮退します。結局それほど変ではない...


1
そう、私は行列式で奇妙なことをしました...あまりにもよく隠されているので、自分で見つけることができませんでした!
デニス

@Dennisこれは、いつか決定要因を拡張しようとしたので知っています。それがクロス積として機能するようにしたい場合に得られるものです。私はそれがあまりにも奇妙かもしれないと思ったし、誰かが同じことを思い付く期待していなかったので、しかし、それは...長くかかった
jimmy23013

これらは本当に「バイト」と見なすことができますか?コードのためのポイントUTF-16の範囲です。これにより、このソリューションでは、異種エンコードを想定して6バイト、均質エンコードを想定して8バイトになります。ここで正直に尋ねます。
ジュール


11

六角形91 33バイト、

1""?{\>{+/</+'+./_'..@'~&/!}'+=($

展開:

    1 " " ?
   { \ > { +
  / < / + ' +
 . / _ ' . . @
  ' ~ & / ! }
   ' + = ( $
    . . . .

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

それでもややゴルファーに見えますが、FryAmTheEggmanが私に勝つ前に投稿するつもりでした。;)

説明

次に、色分けされた実行パスを示します。

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

ただし、これらはゴルフのために不必要に複雑になります。以下は、sanerレイアウトを使用したまったく同じコードです。

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

それは良いです。最後に、メモリダイアグラムを示します。赤い矢印は、メモリポインタ(MP)の初期位置と向きを示しています。

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

要点は、エッジABCのイテレータを追跡しながら、f(i)f(i + 1)f(i + 2)とラベル付けされた3つのエッジでフィボナッチ数を繰り返し計算していることです。その間、これらのエッジの役割は、各反復後に周期的に交換されます。これがどのように起こるか見てみましょう...

コードは、初期設定を行う灰色のパスから始まります。f(i)にはすでに正しい初期値があることに注意してください0

1   Set edge f(i+1) to 1.
""  Move the MP to edge A.
?   Read input n into edge A.
)   Increment n.

これで、緑のパスがメインループになります。_そして>単なる鏡です。

(     Decrement n.
<     If the result is zero or less, continue on the red path, otherwise
      perform another iteration of the main loop.
{     Move the MP to edge f(i+2).
+     Add edges f(i) and f(i+1) into this edge, computing the next Fibonacci number.
'     Move the MP to the edge opposite A.
~     Multiply by -1 to ensure that it's non-positive (the edge may have a positive
      value after a few iterations).
&     Copy the current value of n from A.
'     Move back and to the right again.
+     Copy n by adding it to zero. Since we know that the other adjacent edge
      is always zero, we no longer need to use ~&.
'+'+  Repeat the process twice, moving n all the way from A to B.
=     Reverse the orientation of the MP so that it points at f(i) which now
      becomes f(i+2) for the next iteration.

このようにして、MPはエッジの内側のトリプレットを移動し、nゼロに達するまで連続したフィボナッチ数を計算します。最後に、赤いパスが実行されます。

{}    Move the MP to f(i).
!     Print it.
@     Terminate the program.

TimwiのHexagonyColorerおよびEsotericIDEで生成されたダイアグラム。


聖なる牛!私はあなたにbeatられることを期待していましたが、そんなに多くはありません!0.o
ブルー

@Blueあなたに説明を加えるつもりですか?その仕組みに興味があります。:)遅かれ早かれこれにも説明を追加しますが、今日の時間を見つけるかどうかはわかりません。
マーティンエンダー

ええ、私はもっと伝統的な計算方法を使っています。私は完全にいくつかのバイトを保存していることができることを、&忘れ
ブルー


7

Stack Cats、14 13バイト、feersum

^]T{_+:}_

-nm+4バイトのフラグ付き。 オンラインでお試しください!

さて、そのループはナッツでした。私はそのような減少したアルファベットやブルート強制的に上ブルートフォース攻撃など、いくつかのアプローチ、試みた3x+25x+4、それを拡張しようとしているが、私はするソリューション予想していなかった、実際にループが含まれています。

これがどのように機能するかを確認する最良の方法はD、デバッグ用のフラグを追加して(で実行する-nmD)、上記のTIOリンクのデバッグをオンにすることです。{}スタックの先頭は再びその値であるとき、ループは、ループの先頭でスタックの先頭を覚えて、終了します。ループの内部では、スタックの上位3つの要素の減算とサイクリングが楽しく行われます。これは、ループが非常に多くの反復で実行される方法です。


6

Sesos、14 11バイト、Leaky Nun

n 2を計算します。ここで試してみてください。

六角ダンプ:

0000000: 16c0f7 959d9b 26e83e ce3d                         ......&.>.=

アセンブリから:

set numin
set numout
get
jmp
  jmp, sub 1, fwd 1, add 1, fwd 1, add 2, rwd 2, jnz
  fwd 2, sub 1
  rwd 1, sub 1
  jmp, sub 1, rwd 1, add 1, fwd 1, jnz
  rwd 1
jnz
fwd 2
put

素敵な、あなたは私の元のゴルフバージョンよりもさらに短いです。
リーキー修道女

これ1 + 3 + … + (2n–1)n × n:)の代わりに計算されます
Lynn

私もあなたのアプローチを使用しました
リーキー修道女

6

悲惨な、776 759バイト、破壊可能なスイカ

| |||||||| | |
|| |||||| |
||| |||| |
|||| || |
||||| || |
|||| |||| |
||| |||||| |
|| |||||||| |
| |||||||||| |
|| |||||||| |
||| ||||||| |
||||||||||| |
||||||||||| |
||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
||||||||| |
||||||||| |
||||||||| |
|||||||||| |
||||||||||| |
|||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
|||||||| |
||||||| |
|||||| |
||||| |
|||| |
||| |
|| |
| |
| |
| |
|| |
|| |
|| |
|| |
|| |
| |
| |
| |
|| |
||| |
|||| |
||||| |
|||||| |
||||||| |
|||||| |
||||||| |
|||||||| |
||||||||| |
|||||||||| |
||||||||||| |
|||||||||||| |
||||||||||| |
|||||||||| |
||||||||| |
|||||||| |
||||||| |
|||||| |
||||| |
|||| |
||| |
|| |
| |
| |
| |
| |
|| |
| |
|| |
||| |
||| |
|||| |
||| |
|| |
| |
| |
| |
|| |
|| |
|| |
|| |

私はこの言語のソースコードを読み込もうとしましたが、混乱しすぎていました。1つip[1]は、行番号で、もう1つip[0]は列番号で、cp座標は他の方法で使用されます。ただし、の値cpがに割り当てられる場合がありますip。私はプログラムが何をしているかを理解しようとするのをあきらめ、より少ないバーを使用して同一の命令シーケンスをエンコードする方法を見つけました。



5

J、17 12バイト、マイル

+/@(]!2*-)i:

ゴルフをしただけのオリジナルとほぼ同じです。:)

i:有する+1と比較範囲はi.有用な(および奇妙な)です。i.ここで使用する場合はn=0正しくありませんが、幸いなことにそれをi:解決します。

こちらからオンラインでお試しください。


i:負の値に対してゼロであることのきちんとしたトリック。私のバージョンはでした+/@(]!2*-)i.,]
マイル

5

M、10 6バイト、デニス

R×\³¡Ṫ

与えられたnは、それは計算のn 番目のレベルの階乗をn個。これは楽しい運動でした!

コードはJellyとして実行できるため、オンラインで試すことができます

説明

R×\³¡Ṫ  Input: n
R       Create the range [1, 2, ..., n]
   ³¡   Repeat n times starting with that range
 ×\       Find the cumulative products
     Ṫ  Get the last value in the list
        Return implicitly


5

Haskell、15 14バイト、xnor

until odd succ

私は「無意味な」構文を解読することを学ぶために実りのない数時間を費やしました... until代わりにこれを見つけました。

または、より少ない13バイトの場合は、until odd(+1)


うまくやった、これは私が念頭に置いていたものです。私は3つの言葉が好きです。
-xnor

4

パイソン2、43 40、xsot

g=lambda n:n<2or-~sum(map(g,range(n)))/3

興味深いことに、これは元々持っていたものとは異なります。
-xsot

4

パイク、11 9バイト、マディフィッシュ

hVoeX*oe+

ここで試してみてください!

使い方

          Implicit input: n (accumulator), n (iterations)
h         Increment the number of iterations.
 V        Do the following n + 1 times.
  o         Iterator. Pushes its value (initially 0) and increments it.
   e        Perform integer division by 2.
            This pushes 0 the first time, then 1, then 2, etc.
    X       Square the result.
     *      Multiply the accumulator and the result.
      oe    As before.
        +   Add the result to the accumulator.
            This sets the accumulator to a(0) = 0 in the first iteration and
            applies the recursive formula in all subsequent ones.

そのメソッドを使用すると、で8を取得できますhV~oX*o+。私の5バイトの答えはSDmX^
ブルー

ああ、~oきちんとしている。SDmX^しかし、何が起こるのか分かりません。
デニス

基本的には、その2乗に対して1のインデックス範囲で混合ベースの会話を使用します。OEISではありません
ブルー

ああ、m影響を与えるのはでX、影響はありません^か?それは多くを説明します。
デニス

ええ、mそして同様のものは次のノードのみを使用します。ドキュメントなどにコメントはありますか?
ブルー

4

05AB1E7 4、エミグナ

LnOx

正の整数1 ^ 2 + 2 ^ 2 + 3 ^ 2 + ... + n ^ 2 = n(n + 1)(2 * n + 1)/ 6の平方和の公式から両側に2ずつSum_ {k = 0..n} 2 * k ^ 2 = n(n + 1)(2 * n + 1)/ 3を取得します。これは、このシーケンスの代替式です。-マイクウォーバートン(mikewarb(AT)gmail.com)、2007年9月8日


私が見逃した私の公開されたものの些細な修正があったので、あなたが4でそれをクラックしたことをうれしく思います。いいね!
エミグナ16

4

ゼリー、22 21バイト、デニス

_²×c×Ḥc¥@÷⁸÷’{S
‘µR+ç

最後のJellyソースコードを読むのに数時間費やしたので、この「スキル」を使用することもできます。@Dennisが彼の数学的発見を共有して、より短い式を可能にすることを願っています(奇妙なジェリートリックだけでなく、何かがあると仮定して!)。



@ Sp3000ああ、まあなぜそれを投稿しなかったのですか?
feersum

デニスがM:Pに再投稿する前に6について考える時間をもっと
Sp3000

4

J、20 19バイト、マイル

[:+/2^~+/@(!|.)\@i.

これは、二項係数の合計として計算されるフィボナッチ数の平方として製品を計算します。

ありがたいことに、@ miles自身がこのコメントでフィボナッチ数を生成するコードを投稿しました。


4

Acc !! 526 525バイト、DLosc

N
Count x while _%60-46 {
(_+_%60*5-288)*10+N
}
_/60
Count i while _/27^i {
_+27^i*(_/27^i*26-18)
}
_*3+93
Count i while _/27^i/27%3 {
_-i%2*2+1
Count j while _/3^(3*j+2-i%2)%3 {
_+3^(1+i%2)
Count k while _/3^(3*k+1+i%2)%3-1 {
_+3^(3*k+1+i%2)*26
}
}
}
Count i while _/27^i/3 {
_-_/27^i/3%27*27^i*3+_/3^(3*i+1+_%3)%3*3
}
_/3
Count i while _/100^i {
_*10-(_%100^i)*9
}
Count i while _/100^i/10 {
_+_/100^i/10%10
Count j while i+1-j {
_+(_%10-_/100^(j+1)%10)*(100^(j+1)-1)
}
}
_/100
Count j while _/100^j {
Write _/100^j%10+48
}

これがどのように機能するかはわかりませんが、小さな改善を見つけることができました。

24c24
< _+_/100^i*100^i*9
---
> _*10-(_%100^i)*9

ああ、撃って。私が見逃した数学のゴルフを誰もキャッチしないことを望んでいました。+1
DLosc

4

Haskell、10バイト、xnor

gcd=<<(2^)

使用例:map ( gcd=<<(2^) ) [1..17]-> [1,2,1,4,1,2,1,8,1,2,1,4,1,2,1,16,1]

仕組み:oeisページから、a(n) = gcd(2^n, n)Haskell構文で記述または記述されていることがわかりますa n = gcd (2^n) n。パターンf x = g (h x) xを持つ関数は、function =<<:を介してポイントフリーにすることができます。f = g =<< hしたがって、gcd=<<(2^)これはに変換されgcd (2^x) xます。


...............方法
TuxCrafting





3

MATL、11 10バイト、Luis Mendo

YftdAwg_p*

-1 ^ length(array)を行う代わりに、要素をブール値(常に1)に変換し、それらを否定し、要素の積を取ります。




3

Brachylog、11 10バイト、Fatalize

yb:AcLrLc.

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

説明

BrachylogはPrologから派生した言語であり、その最大の能力は物事を証明することです。

ここでは、これらのステートメントを証明します。

yb:AcLrLc.
yb:AcL       Inclusive range from 1 to input, concatenated with A, gives L
     LrL     L reversed is still L
       Lc.   L concatenated is output

これはまさに私が念頭に置いていた答えであり、よくやった!
16

3

ゼリー、9 8バイト、デニス

œċr0$L€Ḅ

ごめんなさい!意図した解決策を見つけることができませんでした。

これは、置換で値C(n+k-1, k)を選択する方法の数であるという事実に依存しています。kn

注:これは、カウントするために可能なセットを生成するため、非効率的です。したがって、nの大きな値をオンラインで使用しないようにしてください。

オンラインで試すか、最大nを確認します。

後で、n = 1000 を計算するのに十分効率的な別の8バイトバージョンを見つけました。これにより、二項係数を使用して値が計算され、リストの生成が回避されます。

Ḷ+c’Ṛ;1Ḅ

オンラインで試すか、最大nを確認します。

説明

œċr0$L€Ḅ  Input: n
  r0$     Create a range [n, n-1, ..., 0]
œċ        Create all combinations with replacement for
          (n, n), (n, n-1), ..., (n, 0)
     L€   Find the length of each
       Ḅ  Convert it from binary to decimal and return

Ḷ+c’Ṛ;1Ḅ  Input: n
Ḷ         Creates the range [0, 1, ..., n-1]
 +        Add n to each in that range
   ’      Get n-1
  c       Compute the binomial coefficients between each
    Ṛ     Reverse the values
     ;1   Append 1 to it
       Ḅ  Convert it from binary to decimal and return


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