Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「農家は Replace() されました」で始める競技プログラミング!

Avatar for nagise nagise
January 06, 2026

「農家は Replace() されました」で始める競技プログラミング!

Burikaigi 2026 Day2 余興のモブプログラミング。
プログラミングゲーム「農家は Replace() されました」のエンドコンテンツであるリーダーボードを会場のみんなとモブプログラミングしてスコアを競います。

Avatar for nagise

nagise

January 06, 2026
Tweet

More Decks by nagise

Other Decks in Technology

Transcript

  1. 1 © 2024 CREDIT SAISON CO., LTD. CONFIDENTIAL 「農家は Replace()

    されました」   で始める競技プログラミング! 2026.01.10 Burikaigi day2 株式会社クレディセゾン エンタープライズ開発センター なぎせゆうき @nagise
  2. 2 © 2024 CREDIT SAISON CO., LTD. CONFIDENTIAL 自己紹介 富山県出身 富山市在住

     株式会社 クレディセゾン  株式会社 凪瀬アーキテクツ 主なジャンル • Java言語仕様 ◦ https://docs.oracle.com/javase/specs/index.html • 書籍 Effective Java の解説ポッドキャスト Tsundokanai Radio ◦ https://podcasters.spotify.com/pod/show/dokanai/ • Javaのジェネリクス • 日本の旧暦のライブラリ (開発中) • Blog : プログラマーの脳みそ • Burikaigi (富山で1月~2月頭で行われるカンファレンス ) なぎせゆうき X (Twitter) @nagise
  3. 3 © 2024 CREDIT SAISON CO., LTD. CONFIDENTIAL 今日やること •

    モブプログラミングをやります ◦ 複数人のメンバーが同じ場所、同じコンピュータ・ 画面でプログラミングを行う開発手法 • 対象はゲーム「農家は Replace() されました」のリー ダーボード ◦ ドローンにPython風コードで指示を出し農業(?) をするゲーム ◦ リーダーボードはエンドコンテンツで課題を如何 に速く解けるコードを書くことができるかを競う ◦ いわゆる競技プログラミング • モブプログラミングでワールドレコードに迫ろう!
  4. 4 © 2024 CREDIT SAISON CO., LTD. CONFIDENTIAL ルール •

    課題 : Leaderboards.Hay_Single ◦ Hay = 干草を100,000,000集める時間を競います ◦ マップサイズは8x8 ◦ ドローンの個数は1個限定 ◦ 一番シンプルな課題 • 会場にいる「農家は Replace() されました」のHay_Singleのランカーの人は、会場の みんなで書いたコードのスコアが自己ベストを上回るまで ネタバレ厳禁 ◦ アルゴリズムや高速化のアイデアは口出し厳禁 ◦ 一般的な質問、ゲームシステムについての質問への回答は可 ◦ 経験者、ランカーの人は名乗り出るように
  5. 5 © 2024 CREDIT SAISON CO., LTD. CONFIDENTIAL ランキング状況 2025年12月18日にゲームバランスの調整が行わ

    れてリーダーボードがリセットされた 2026年01月06日現在のHay Single の状況 トップタイムは 02:48.619
  6. 6 © 2024 CREDIT SAISON CO., LTD. CONFIDENTIAL 主要な組み込み関数 •

    harvest() ◦ ドローンの下にあるエンティティを収穫します ◦ 収穫成功時は True それ以外の場合は False を返す ◦ 収穫成功時は 200 tick、それ以外の場合は 1tick • can_harvest() ◦ 植物が完全に成長したかどうかを調べるために使用 ◦ ドローンの下が収穫可能時 True それ以外の場合は False を返す ◦ 実行に 1tick • move(direction) ◦ direction = East | West | North | South ◦ 移動成功時は True それ以外の場合は False を返す ◦ 移動成功時は 200 tick、それ以外の場合は 1tick
  7. 7 © 2024 CREDIT SAISON CO., LTD. CONFIDENTIAL 主要な組み込み関数 •

    get_companion() ◦ コンパニオンプラントを取得する ◦ 1 tick ◦ plant_type, (x, y) = get_companion() • Polyculture(混植、混作) ◦ 指定座標に指定植物が植えてあると収穫量が 160倍になる ◦ 指定植物は Grass、Bush、Tree、Carrot のいずれか ▪ ただし、同種は除く。 Grassの混植対象は他の3種 ◦ 座標は3手以内で移動できる範囲 ◦ 指定植物が育ち切っていなくても OK ◦ Leaderboards.Hay_Single では重要なゲーム要素
  8. 8 © 2024 CREDIT SAISON CO., LTD. CONFIDENTIAL 主要な組み込み関数 •

    plant(entity) ◦ 植物を植える。植える際には事前に耕す必要があるものがある ◦ 成功時は True それ以外の場合は False を返す ◦ 成功時は 200 tick、それ以外の場合は 1tick • till() ◦ ドローンの下の地面を耕し Grounds.Soil にする ◦ Grounds.Soil を till() すると Grounds.Grassland に戻る ◦ 200 tick • 耕していない状態では勝手に Grass が生える • Grounds.Grassland で植えることができる植物 ◦ Bush、Tree • Grounds.Soil で植えることができる植物 ◦ Carrot、 Cactus、Pumpkin、Sunflower
  9. 9 © 2024 CREDIT SAISON CO., LTD. CONFIDENTIAL 主要な組み込み関数 •

    use_item(item, n=1) ◦ 指定された item の使用を n 回試みます ◦ Items.Water、Items.Fertilizer などの一部のアイテムでのみ使用できます ◦ 成功時は True それ以外の場合は False を返す ◦ 成功時は 200 tick、それ以外の場合は 1tick • 水やり ◦ 植物は水をやると成長が早くなります ◦ 地面には 0 から 1 までの水位があります(小数値) ◦ 植物の成長速度は、水位 0の1倍速から水位1の5倍速まで直線的に変化 ◦ 地面は時間とともに乾きます:平均して、毎秒現在の水分の 1%を失いますが、 これにはランダムなばらつきがあります • 肥料 ◦ ドローンの下の植物の残りの成長時間を 2秒短縮 ◦ 肥料を用いると感染する ◦ 感染した植物は収穫量の半分が Items.Weird_Substance になる
  10. 10 © 2024 CREDIT SAISON CO., LTD. CONFIDENTIAL 時間について •

    リーダーボードの環境では 1秒 = 6000 tick • 主要なアクションは 200 tick かかる • 計算などは 1 tick かかる ◦ +、-、*、/、//、%、and、or、... のような2つの値を組み合わせる操作 ◦ if の分岐の実行 ◦ for、while は開始に 1tick かかるが、ループ自体は 0 tick ◦ 関数定義 ◦ データ構造へのインデックス参照 ▪ 辞書やセットの場合は、キーのサイズに応じて追加の tickがかかる • コストが無料のもの ◦ 関数の呼び出し(ただし関数を変数として受け取り実行する場合は 1tick) ◦ 変数の読み込み、書き込み