2015年10月5日月曜日

Paiza Online Hackathon略して「PHO」らしいよ

回文からそもそもこれなんなんだろうと思ってちょっとだけ調べた。
ちょっと触ったのはファーストコードだけ載せておく。
基本的にPython3のコードが好きなのだけれどこのサイトは処理速度を求められるため処理速度が気になった場合Python(Python2系)です。

・・・暇つぶしが必要な時にちょっと少しやろう。

新人女子プログラマの書いたコードを直すだけの簡単なお仕事です!|paizaオンラインハッカソンVol.1

https://paiza.jp/poh/ec-campaign

・概要:
第1入力は【「N (1 ≦ N ≦ 200000)」半角スペース「D (1 ≦ D ≦ 75)」】(NもDも整数)
第2入力はN回「p_i(10 ≦ p_i ≦ 1000000)」の入力(改行区切りで渡されるの意)
第3入力はD回「m_j(10 ≦ m_j ≦ 1000000)」の入力(改行区切りで渡されるの意)
(※C,C++のみ処理性能が高い為かNの最大は500000、Dの最大は300テストケースも異なる)

「p_i」リスト2つの組み合わせ合計が「m_j」以下で最も近い値をDのパターンだけ出力する。
「p_i」の組み合わせ全てが「m_j」の値を越える場合は「0(整数ゼロ)」を出力する。
「p_i」の組み合わせは「p_0+p_0」といった自身同士の組み合わせは含まない。

・ファーストコード(Python):

※テストケース1 : 2.30 秒。2以降はタイムアウト。制作者の意図に嵌り過ぎ

・途中コード1

※テストケース1 : 0.70 秒。2以降はタイムアウト。dequeなら?とお試しぐっと早くはなったがダメ

・途中コード2

※テストケース1 : 0.88 秒。2以降はタイムアウト。遅くなってゆく


・ラストコード(Python):

テストケース1 : 0.02 秒。
テストケース2 : 0.03 秒。
テストケース3 : 0.16 秒。

最終的に他の問題をやってきてから戻ってきた。forによる読み込みは遅いという事がほかの問題で知ったためsysをインポート。

ここら辺の入出力はCscriptと同じ感じ。
wscript.stdin.readline()
cscriptではこんな感じ。


更に指定値に割り込む要素番号をどうすれば早く知る事ができるかというのを調べてbisectにあたった(これ便利ー)。


処理要点のみ説明すれば以下
 campaignsの値段を商品一覧右挿入点取得(bisect_right同意味
 best&temp初期化
 strtよりendが大きい間
 エンド特定商品・最低値+最高値がcampaignsより低くなるまでendを下げる
 tempとして値段保持
 temp bestがtempを下回る間
 現状best
 一致で終了
 一致しない場合最小値を繰り上げ

それで後で調べたら最終問題はキャンペーン価格のみで通るらしい。
どういう事かと言うと、価格リストが増えるとキャンペーンへ価格の組み合わせが完成する率が高くなる。
今回の問題でいうと結果的に最終ケースはキャンペーン価格を表示するだけで良いとの事。ぐすん。


女子大生とペアプロするだけの簡単なお仕事です!|paizaオンラインハッカソンVol.2 

https://paiza.jp/poh/paizen

・概要:
第1入力は設置面【「H (1 ≦ H ≦ 130)」半角スペース「W (1 ≦ W ≦ 130)」】(HもWも整数)の
第2入力は設置可能行【D_i(1 ≦ i ≦ H)】「1が配置済」「0が空き領域」で0と1のW桁
 (例:Wが5の場合「01010」や「11110」の様に入力される)
第3入力は設置数【N(1 ≦ N ≦ HW)】最大は1x1が全マスとなるHxW
第4入力は設置種【「S_i (1 ≦ i ≦ N)」半角スペース「T_i (1 ≦ i ≦ N)」】
 サイズは【「S_i (1 ≦ S_i ≦ 300)」半角スペース「T_i (1 ≦ T_i  ≦ 300)」】
(※Java,C,C++,C#の場合「H」「W」の最大は130ではなく300)

上記条件で初期配置に対し、設置種それぞれ配置可能数を出力する。

・ファーストコード(Python):

・コードは後で書くとして、問題の所見:
値は1か0で来るので画面を越えない範囲でスライスの合計0なら配置可能。
左から右、上から下へ処理対象を移動し「A行B文字目」において、「B+T<=H」範囲内で「D_A行目[B:T]」をスライス。「A+S<=H」範囲内でA~A+S行目までを足して0ならば設置可能


天才火消しエンジニア霧島「もしPMおじさんが丸投げを覚えたら」|paizaオンラインハッカソンLite 

https://paiza.jp/poh/kirishima

マンガ版「エンジニアでも恋がしたい!」〜転職初日にぶつかった女の子が同僚だった件〜|paizaオンラインハッカソン4 Lite 

https://paiza.jp/poh/enkoi

■ドッキドキの転職初日、最初の仕事は炎上PJの鎮火!?

・ファーストコード(Python3):58 byte


■野田さんと飲みに行ける!?クソコードをささっと修正!

・ファーストコード(Python3):114 byte


■ゲームアプリ「パズウナ」の作成に挑戦!野田さんはよろこんでくれるかな!?

・ファーストコード(Python):181 byte

ちなみにsleepで検証してみたらテストケース4と5は最大の「300,000マス」区間は共に「150000マス」です。


マンガ版「俺の許嫁と幼なじみが修羅場すぎる」|paizaオンラインハッカソン5

https://paiza.jp/poh/enshura

■レナたんが俺の許嫁!?手紙の暗号を解読せよ!

・概要:奇数番目の文字列のみ表示

・ファーストコード(Python3):19 byte

解説:入力値を直接ステップ2でスライスする。19byteで済む。

■レナたんのパパが経営する会社の入社試験に挑戦だ!

概要:
第1入力は【N(1 ≦ n ≦ 210)】(Nは整数で必ず7の倍数)=【N(7 ≦ n=7*? ≦ 210)】
第2入力はN回「p_i(0 ≦ s_n ≦ 1000000)」の入力
1~7入力を1セットとして、各何番目の合計を7つ出力する。

・ファーストコード(Python):94 byte

先に↑を書いたけどいっそベタでもいいんじゃないかと↓を思いついたが長くなったのでやめた

■ミナミとレナ、どちらを選ぶか究極の選択です・・!

・ファーストコード(Python):12 byte

・ファーストコード(Python):14 byte

・そりゃレナでしょ?2byte短いもの(ぇ)

■障害が起きている会社のメインシステムを改修だ!!(レナルート)

・ファーストコード(Python): byte


■会社を辞めて、一から自分でアプリ開発を頑張るぜ!(ミナミルート)

・ファーストコード(Python): byte


漫画版: 女子高生プログラマーの大バトル!〜コボール文明の逆襲〜|paizaオンラインハッカソン6

https://paiza.jp/poh/joshibato

■ちょうどいい濃度のコーヒーを淹れ、古代コボール王Ⅳ世を撃破せよ!|食いしん坊ハッカー:六村リオ

https://paiza.jp/poh/joshibato/rio
・概要:

■古代コボールすごろくで古代コボール王Ⅳ世を撃破せよ!|天才ハッカー:霧島京子

https://paiza.jp/poh/joshibato/kirishima
・概要:

■遺跡発掘ゲームで古代コボール王Ⅳ世を撃破せよ!|なでしこハッカー:緑川つばめ

https://paiza.jp/poh/joshibato/tsubame
・概要:2ケタの整数N(10 ≦ N ≦ 99)に対して、N+Nの10の位+Nの1の位の合計
・例:27が入力された場合【27+2+7】となり【36】が回答となる

・ファーストコード(Python3):

・ラストコード(Python):



「え、妻が松江?」松江Ruby会議07協賛 回文作成プログラミングコンテスト|POH6+ 

https://paiza.jp/poh/joshibato/matsue-ruby

■最強の復活の回文

・概要:これを最初にやったので概要についてはこちら

・提出コード(Python):211 byte

0 件のコメント:

コメントを投稿