タグ付けされた質問 「simulation」

シミュレーションを伴う課題に。

10
9ニンジャの死
チャットでのこの会話に触発されました。 このチャレンジの目標は、忍者をエミュレートし、彼が何人の死者を残したかを数えることです。 スペック あなたの忍者は、残り9人で始まります。彼はまた、入力として不可欠な開始健康状態を取得します。 次に、彼は入力として、自分の健康を変える人生の出来事のリストを受け取ります。これらは、負、正、またはゼロの整数です。 いずれかの時点で、彼の健康がゼロ以下に達すると、彼は命を失い、彼の健康は最初の健康に戻ります。 あなたのプログラムは、彼が残した死亡者数を報告すべきです。残りがゼロ以下の場合は、dead代わりに出力する必要があります。 これはcode-golfなので、バイト単位の最短コードが勝ちです! テストケース 3, [] -> 9 100, [-20, 5, -50, 15, -30, -30, 10] -> 8 10, [-10, -10, -10, -10] -> 5 10, [-10, -10, -10, -10, -10, -10, -10, -10, -10] -> dead 0, [] -> dead 0, [1] -> dead …

2
コードゴルフ:宇宙船の運命は?[浮動小数点バージョン]
この質問は、ASCIIアート版よりも少し難しいです。芸術はありません、そして今、あなたはいくつかの浮動小数点演算をすることができます! チャレンジ USS StackExchangeは、船上で天文学的な爆発が発生したときに、惑星cg-00DLEFの重力場を移動していました。船舶のプログラミング責任者として、cg-00DELFの太陽系で土地をcrash落させることを余儀なくされるかどうかを予測するために、船舶の軌道をシミュレートするのがあなたの仕事です。爆発中、船はひどく損傷を受けました。宇宙船の無料のDEEEPRAROM *は限られているため、できるだけ少ない文字でプログラムを作成する必要があります。 *動的に実行可能な電子的に消去可能なプログラマブルランダムアクセス読み取り専用メモリ シミュレーション ASCIIアート版にやや似ていますが、タイムステップのアイデアがあります。もう1つのバージョンでは、タイムステップは比較的長い時間でした。船は、1つのタイムステップで惑星の重力をはるかに超えて移動できました。ここで、時間ステップは、距離が大きくなるため、時間の単位がはるかに小さくなります。ただし、1つの大きな違いは、セルが存在しないことです。宇宙船の現在の位置と速度は、関係する重力とともに浮動小数点数になります。もう1つの変更点は、惑星のサイズがはるかに大きくなったことです。 シミュレーションには最大3つの惑星があります。3つすべてに特定の位置、半径、および重力があります。各惑星の重力は、惑星の中心に直接力を加えるベクトルです。このベクトルの強度を求める公式は(Gravity)/(Distance**2)、です。ここで、距離は、船から惑星の中心までの正確な距離です。これは、重力が到達できる場所に制限がないことを意味します。 特定の時間に、宇宙船には速度があります。これは、最後のタイムステップから現在までに移動した距離と角度です。船にも勢いがあります。現在のタイムステップと次のタイムステップの間で移動する距離は、その位置のすべての重力ベクトルに加えられた現在の速度の合計です。これが宇宙船の新しい速度になります。 各シミュレーションには、10000タイムステップの時間制限があります。宇宙船が惑星の内部を移動する場合(惑星の半径よりも惑星の中心に近い場合)、その惑星に衝突します。シミュレーションの終了までに宇宙船がどの惑星にも衝突しない場合、重力から脱出したと推定されます。船が完全に整列し、10001番目のタイムステップで1落しながら10000タイムステップの間軌道にとどまることはまずありません。 入力 入力は、STDINへの4行です。各行は、4つのコンマ区切りの数字で構成されています。数値の形式は次のとおりです。 ShipLocX,ShipLocY,ShipVelX,ShipVelY Planet1LocX,Planet1LocY,Planet1Gravity,Planet1Radius Planet2LocX,Planet2LocY,Planet2Gravity,Planet2Radius Planet3LocX,Planet3LocY,Planet3Gravity,Planet3Radius 惑星が3つより少ない場合、残りの線はすべての値に対してゼロで埋められます。入力例を次に示します。 60,0,0,10 0,0,4000,50 100,100,4000,50 0,0,0,0 これは、宇宙船が(60,0)に位置し、10ユニット/タイムステップの速度で「上/北」に直進していることを意味します。2つの惑星があり、1つは(0,0)に、もう1つは(100,100)にあります。どちらも重力が4000で半径が50です。これらはすべて整数ですが、常に整数とは限りません。 出力 出力は、宇宙船がland落したかどうかを伝えるSTDOUTへの1ワードです。船がcrash落した場合、印刷しますcrash。それ以外の場合は、印刷しますescape。上記の入力に対して予想される出力は次のとおりです。 crash 何が起こったのか疑問に思うかもしれません。以下は、宇宙船の詳細な飛行ログを含むPastebinの投稿です。数字は、人々がイベントを視覚化するのを助けるのがあまり得意ではないので、ここで何が起こったのでしょうか?北に移動した後、2番目の惑星の西にわずかに通過し、かろうじて行方不明になります。その後、惑星の北側を曲がり、2番目の惑星の東側に衝突します。 審査のためのいくつかのケース 60,0,10,-10 0,0,2000,50 100,100,1357.9,47.5 0,0,0,0 エスケープ(逆二乗則により、60単位離れている場合、2000はあまり重力ではありません) 0,0,0,0 100,100,20000,140 -50,-50,50,50 -100,-100,50,50 クラッシュ(最初の惑星は非常に大きく、非常に近い) 0,0,0,0 0,0,0,0 0,0,0,0 0,0,0,0 脱出(これはエッジケースです:惑星がなく、簡単な解釈は、宇宙船が惑星の真上にあることを示唆します) ルール、制限、および注意 これはコードゴルフです。標準コードのゴルフ規則が適用されます。プログラムは、印刷可能なASCII文字のみで記述する必要があります。外部データベースにはアクセスできません。任意の言語(この課題の解決に特化した言語以外)でエントリを作成できます。 伝送終了

1
(重力ベースの)ビリヤードボールタイプのコンピューターのシミュレーション
この機械 ビリヤードボールタイプのマシンは、記号\ _ /、大文字、小文字、スペース、および数字のみで構成されてい1ます。 \そして/ランプです。上から来るボールは、それぞれ右側または左側に偏向されます。両方のランプについて、ボールがどちらかの側から来る場合、ボールは下向きに偏向されます。 _論理要素です。それによって実行されるロジックは、コンピューターの最もビリヤードに似ていない部分です。最初に、左または右から来るボールは同じ方向に続きます。上から来るボールは停止します。次に、実行の終了後(以下のマシンの実行を参照)、その上を通過する/着地するボールの数が正の偶数である場合、1つのボールが要素の下部から解放されます。 スペースは何もしません。任意の方向から来るボールは、重力により真っ直ぐに落ちます。 小文字は入力です。すべての入力は、単一の1または0になります。 大文字は出力です。出力される数は、その場所にヒットしたビリヤードボールの数になります。 番号1は、その場所で追加のビリヤードボールをリリースします。論理1を表します。 以外のすべてのキャラクター \_/、あらゆる方向から来るボールを重力により真っ直ぐに落下させます。 ボールが結合、分割、衝突することはありません。入力、a _、またはa から解放された場合にのみ作成され1ます。彼らはまっすぐに倒れたときに破壊されます_。 サンプル機 1 a \_/ b \_/ \/ /\ / _ _ A B マシンには空白行はありませんが、_'を使用すると、空白行があるように見える場合があります。 マシンの実行 マシンは、レイヤーまたは行で実行されます。最上層のビリヤードボールの動きはすべて、2番目の層で何かが起こる前に実行されます。 この機械 ab \_A C 次のように実行されます。 最初aに、フォームの入力を求められますa:。その後、ユーザーは1または0を入力します(その後にEnterが続きます)。入力に対してこれを繰り返しますb。これで最初のレイヤーの終わりです。ユーザーが両方の入力に1を入力したと仮定します。 その後、最初のボール(からのパスを描くaに沿って行く)、\越えて、_にし、Aし、下のスポットに落ちますA。次に、2番目のボール(からb)のパスをトレースし_ます。これで第2層の終わりです。 さて、3番目のレイヤーの前に、_2つのボールがクロスしているので、1つのボールをリリースします。出力Aには1つのボールが交差しているため、が出力されますA:1。 3番目のレイヤーでは、最初のボール(から_)のパスをトレースしますC。2番目のボール(から落ちたA)もまっすぐ落ちます。 これで、4番目のレイヤーの前に、出力Cが1つのボールを通過したため、出力されますC:1。 4番目のレイヤーは空白なので、プログラムは終了します。 合計結果は次のようになります a:1 (the user entered the one) b:1 …

1
言葉の間の魅力
ニュートンの重力理論では、2つの点質量の間の重力は F =(Gm 1 m 2)/ r 2 どこ Gは重力定数です:6.674×10 -11 N・(m / kg)2 m 1は最初のオブジェクトの質量です m 2は2番目のオブジェクトの質量 rは、重心間の距離です。 チャレンジ 2つの単語間のプルをシミュレートする必要があります。各小文字には、アルファベットの位置によって与えられる質量があります。大文字には小文字の2倍の質量があります!いくつかのスペースで区切られた2つの単語と、正の整数の秒数sを含む文字列が与えられます。s秒後に文字列がどのように見えるかを出力します。 情報 単語は抽象的であるため、単位と定数の異なるセットがあります 質量:WMU(Word Mass Unit)-文字「a」の質量に等しい。 距離:em、1文字の長さ。 フォース: N W(ワードニュートン)= WMU・em / s 2 重力定数:G = 1 N w・(em / WMU)2 最初の文字は、x軸の位置0に対応します。 すべての計算は可能な限り正確に行う必要があり、最後にのみ最も近いemに丸めます。 微積分を使用する必要はありません。Fを毎秒再計算し、新しい加速度を速度に自動的に適用し、1秒後に位置に速度を適用する必要があります(例を参照)。 2つの単語が互いに衝突すると(など catdog )、それ以上移動しません。 重心 単語の重心は次の式で見つけることができます: ここで、Mは単語の総質量、m …

2
Xが3より大きく、XとYの間に少なくとも2つの差がある
私はいくつかのC ++をゴルフしようとしています。この条件を短くすることは可能ですか? X > 3 & X - Y > 1 (もちろん、空白の削除は別として。) だから、X少なくともです4がX >= Y + 2。 XおよびYは、[0,5]間隔の整数です。 ビット単位の数式を見つけようとしましたが、失敗しました。
11 code-golf  number  tips  c++  code-golf  popularity-contest  obfuscation  code-golf  c  code-golf  board-game  hexagonal-grid  code-golf  game  grid  code-golf  number  permutations  popularity-contest  math  graphical-output  number-theory  king-of-the-hill  code-challenge  compression  code-challenge  fastest-code  code-golf  math  ascii-art  animation  code-golf  popularity-contest  generation  counting  fastest-code  fastest-code  popularity-contest  image-processing  king-of-the-hill  code-golf  conversion  binary-tree  code-golf  math  number  rational-numbers  division  code-golf  restricted-source  hashing  atomic-code-golf  logic-gates  code-golf  function  code-challenge  puzzle-solver  ai-player  test-battery  popularity-contest  music  compression  code-golf  number  stack  atomic-code-golf  logic-gates  ascii-art  popularity-contest  code-golf  date  grid  code-challenge  game  code-golf  parsing  code-golf  math  geometry  sequence  popularity-contest  code-trolling  code-golf  string  restricted-source  code-golf  quine  king-of-the-hill  code-golf  math  code-golf  simulation  code-golf  ascii-art  code-challenge  sorting  optimization 

2
ダンジョンを掘る数字
編集:質問の最後に、ボーナスパズルの最初のソルバーに100の評判の賞金を授与します! この賞金には期限がないため、回答が表示されたときにのみ、賞金を質問に追加します。 1桁の正の整数の減少しないリストが与えられた場合、桁を掘るダンジョンの深さを決定する必要があります。 ███ ███ A dungeon with 5 blocks removed and a depth of 3. ███ ███ ███ ████ ████████ 掘り始める前に地面は水平です。 すべての指は下から土のブロックを1つだけ削除できますが、ダンジョンの外側からその位置に到達する必要があり、ブロックを削除した後、ブロックはダンジョンを離れる必要があります。そうしている間、数字は水平ステップでその数値を超えて下降または上昇することはできません。 数字は掘るために次の戦略を使用します: 最小の値を持つ数字が最初に掘り、その後、次のディガーは常に残りの数字の次に小さい値になります。 最初の桁はどの位置でも掘ることができます。(すべての地面は同じです。) 次の数字は、常に開始された列の一番左にあり、そこから出たり入ったりすることができます。そのような列が存在しない場合、右端の列の右側にある新しい列を掘り始めます。 たとえば、数字1 1 1 2 3 3は次のダンジョンを掘ります(どの種類の数字がその位置を掘り起こすかを示す数字で段階的に視覚化します)。 ███1████ ███11███ ███11███ ███11███ ███11███ ███11███ ████████ ████████ ███1████ ███1████ ███1████ ███13███ ████████ ████████ ████████ ███2████ ███2████ …

3
クラッシュする車のシミュレーション
前書き 速度と方向を持つASCII車がいくつかあります。それらの速度はそれらの数によって表されます。車は<>それなら停止しています。例えば: <> 1> 2> 3> 1秒後、 <> 1> 2> 3> 2つ後、私は得る <> 1> 2> 3> 2台の車が近すぎると、クラッシュします。 1> <1 1> <2 1秒後、これは ### ## 2台の車が交差する場合、それらは本来あるはずのハッシュタグになります。 一方の車がもう一方の車を「ホップ」するのに十分な速さであれば、クラッシュは発生しません。 3><1 2><1 4><> なる <13> ### <>4> 車が画面から外れると、(クラッシュが発生しない限り)車は消えます。車が画面の外に出る方法はありません。 <11> <1 1> 1 1> 1> チャレンジ 与えられた自動車の物理学に基づいて、未来に1秒ずつタイムステップできるプログラムを作成する必要があります。入力は、スペースと最大速度5(正規表現に一致(<[1-5]|[1-5]>|<>| )+)の車になります。シミュレーションは1行で行われますが、その行には固定サイズがありません。 テストケース <> 1> 2> 3> 4> 5> …

6
カードペア確率
整数値[ 1、M ] のカードのNコピーで構成されるデッキの合計がN * Mのカードである場合、値が1のカードが値が2のカードに隣接している確率を計算します。 ソリューションは正確または近似であり、同じ入力が与えられたすべての実行で同じである必要はありません。与えられた答えは、真のソリューションの+/- 5%以内である必要があります(RNGが不利になる可能性は非常にまれです)。プログラムは、妥当な時間内(たとえば、使用しているハードウェアでは10分未満)で答えを出す必要があります。MとNは妥当な小ささで、エラーチェックは必要ないと思われるかもしれません。 デッキは循環的ではないため、最初のカードが1で最後のカードが2の場合、これは隣接要件を満たしていません。 テストケースとして、N = 4およびM = 13(標準の52カードデッキ)の場合、予想されるソリューションは〜48.6%です。 これは、ランダムシャッフルを使用したPython + NumPyでの非実装の例です。 from __future__ import division from numpy import * def adjacent(N, M): deck = array([i for i in range(1, M+1)]*N) trials = 100000 count = 0 for i in range(trials): random.shuffle(deck) ores = (deck …

1
じゃんけん競争シミュレーター
あなたは最高の人を見つけるためにじゃんけん選手権を組織することにしました。勝者を決定するために運を上げたくないので、誰もがコンテストの前に書面で彼または彼女の戦術をあなたに与えなければなりません。また、単純なものが好きなので、(岩石、紙、はさみを示す)競争相手の移動は、前のターン(RvR、RvP、RvS、PvR、PvP、PvS、SvR、SvP、またはSvS)のみに基づく必要があります。最初のターンでは、プレイヤーは固定の標識を示さなければなりません。 チャンピオンシップをシミュレートするプログラム(または関数)を作成することにしました。 コンテストの詳細 少なくとも2人の競技者がいます。 すべてのプレーヤーは、他のすべての人と正確に1つの試合を行います。 1試合は7ラウンド続く。 すべてのラウンドで、勝者には2ポイントが与えられ、敗者には何も与えられません。引き分けの場合、両方のプレーヤーが1ポイントを獲得します。 試合でのプレーヤーのスコアは、試合のターンにおける彼または彼女のポイントの合計です。 チャンピオンシップのプレーヤーの最終スコアは、すべての試合でのポイントの合計です。 入力の詳細: プログラムまたは関数がN10文字の長い文字列を受け取り、それぞれがプレイヤーの戦略に対応している。すべてのキャラクターは(小文字)であるr pかs、特定の状況でプレーヤーがじゃんけんやはさみを見せることを意味します。 最初の文字は最初のターンをコードします(その競技者のすべての試合で)。2番目は、最後のラウンドがロック対ロックだった場合にどうなるかを示しています。次のものはRvP、RvS、PvR、PvP、PvS、SvR、SvP、SvSで、最初の文字はプレイヤーのサインで、2番目の文字は対戦相手のサインです。たとえばrrpsrpsrps、プレーヤーがロックから開始し、次に対戦相手の最後の動きをコピーすることを意味します。 文字列のリストは、言語のリスト/配列または同様のデータとして、または1つの文字列として入力できます。後者の場合、ある種の区切り文字は必須です。 出力の詳細: プログラムまたは関数は、入力が提供されたのと同じ順序で各プレーヤーの最終スコアを出力する必要があります。 スコアはスペースまたは改行で区切る必要があります。末尾のスペースまたは改行を使用できます。 例: 入力: ['rrpsrpsrps', 'rpppsprrpr'] 出力:( 5 9ターンはrvr rvp pvs svp pvr rvp pvs) 入力: ['rrpsrpsrps', 'rpppsprrpr', 'ssssssssss'] 出力:( 13 17 12一致は5-9(1番目と2番目)、8-6(1番目と3番目)、8-6(2番目と3番目))) これはコードゴルフなので、最短のエントリが勝ちます。

1
このuHerbertチャレンジを解く
TL; DR:すべての白いパッドを踏み、灰色のパッドを避けて、この特定の課題であるロボットシミュレーションを解決します。各白いパッドを少なくとも1回踏む限り、何回でも白いパッドを踏むことができます。2D命令ポインターを使用したBefungeなどの言語でのソリューションも受け入れられますが、HにはuHerbertプログラムが付属しており、その言語仕様は以下のとおりです。これを解決するためにuHerbertプログラムは必要ありませんが、ソリューションのチェックがはるかに簡単になります。 レベルは次のようになります。これはセルの25x25グリッドで、ロボットと各白とグレーのパッドが1つのセルを占めます。ロボットは最初は上向きです。 uHerbertの背景 Herbertは、2008年にオンラインIGF(Independent Games Festival)プログラミングの課題で最初に遭遇したロボットシミュレーションです。実際のコンテストが終了した後、長い間、課題を試すことができなかったことにがっかりしました。幸いなことに、誰かが私の心を読んで、このダンディな小さなプログラムuHerbert(別名mu-Herbertまたはmicro-Herbert)をコード化したに違いありません。 H(言語仕様) プログラムはロボットのシミュレーションですが、ロボットを動かすためだけのプログラミング言語Hのインタプリタとしても機能します。 3つの指示があります。 S:ロボットは1セル前に進みます L:ロボットは所定の位置で左に90度回転します R:ロボットは正しい位置に90度回転します 関数、パラメータ、および再帰という3つの標準プログラミング機能を自由に使用できます。2つの異なるパラメータタイプがサポートされています。 数値パラメーター g(A):sslg(A-1) ここで、gは1つの数値パラメーターを持つ関数です。これはボイラープレートコードです。この後、関数を呼び出して引数を渡すことにより、実際のプログラムを作成できます。 g(4) これにより、関数が4回呼び出され、パラメータAがゼロの値に達すると、再帰が自動的に終了します。 g(4) = sslg(4-1) = sslg(3) = sslsslg(2) = sslsslsslg(1) = sslsslsslssl 機能パラメーター 機能パラメーターを使用することもできます。これは、基本的に、渡した命令を再現するだけです。 f(A):rAlA したがって、この関数を呼び出して命令を渡すと、次のように評価されます。 f(ss) = rsslss f(sslssr) = rsslssrlsslssr その他の構文 関数は複数のパラメーターを持つことができ、両方のタイプを持つこともできます。あるいは、パラメータを持たない場合もあります。以下は、どちらも有効な関数です。 j:ssss k(A,B):Ajjjk(A,B-1) ご覧のとおり、関数jはパラメーターを取らず、関数kは両方のタイプのパラメーターを取ります。上記のように、Aは機能パラメーターで、Bは数値パラメーターです。 無限再帰 無限再帰も許可されていますが、開始できるのは1回だけであり、最後の白いパッドを踏んだときに効果的に終了します(灰色のパッドを踏んだことはありません)。 m:sslssrm 条件を解決する 目標は、ロボットにすべての白いパッドを踏ませ、灰色のパッドを踏まないようにすることです。白いパッドは、それぞれが少なくとも1回踏まれている限り、何回でも踏むことができます。ロボットは、到達可能なグリッド内の任意のポイントを踏むことができます(一部のレベルにはバリア壁があり、このレベルでは灰色のパッドが一種のバリアとして機能します)。 …

3
PHPゴルフのヒント:ファイルの読み書きとCLI
私はゴルフは最近、およびなどのファイルからデータを読み取るために使用されている技術のいくつかの課題PHPコードの数に参加しているfopen()とfread()か、file_get_contents()本当に私のコードchar型の数に打撃を与えます。特に、コマンドライン入力を読み込むために提供されるメソッド。 私の質問は、ファイルの内容を読み書きする最速の方法(最小キーストローク)と、プロンプトから行を読み込む最速の方法(最小キーストローク)は何ですか? (注:これはコードゴルフなので、外部ライブラリは使用できません。)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.