gotutiyan’s blog

競技プログラミングをやったりopenframeworksでお絵かきをしたりしています。

requestsとbeautifulSoup4でスクレイピングをしてみた

スクレイピングとは webサイトから必要な情報を抜き出してくることです。 requestsとは pythonのモジュールの一つで、httpの通信ができます pip install requests beautifulSoupとは pythonのモジュールの一つで、webサイトのデータを入力して、それを解析し…

ABC136 D Gathering Children

問題 atcoder.jp 解説 最終的にどのような状態になるのか 軽くシミュレートをすると、子供たちは、最終的に"RL"または"LR"であるような境界を行き来するだけになります。文字列の長さに対して回も移動するので、これは確実です。 そこで、このような境界にお…

ABC117 D XXOR 解説

問題 atcoder.jp 数列Aの全ての要素とのxorを最大化するようなK以下の整数を求めよ。 解説 公式解説の序盤について、Xの候補となりうる整数とは Xがなんでも良ければ難易度が下がりますが、K以下というところが難点です。 まずK以下の整数とはどのようなもの…

ICPC2019 国内予選参加記

開始前 リハーサルと授業がモロ被りしてたので、リハーサル残り20分地点でJ,KをAC。問題のアルファベットが本当にJ,Kだったかは忘れました。その後15分くらいで「短句」を解こうとしましたが、本当に何が間違えているのか分からず解けなくて、「まあもう時間…

入門・processingで最小限のシューティングゲームを作る

はじめに 座標系 setup()とdraw() 初期設定 自機を作る マウスに追従させる ビームを撃つ 敵を作る 乱数 上から落とすということ 下まで落ちればまた戻る 敵を「倒せる」ようにする 1体から複数へ 複製するということと、配列 効率の良い配列へのアクセス …

Processingで始める周期運動

こんにちは。KSWLのごつちやんです。 ここでは「三角関数を使って何かする」ことを「周期運動」と銘打って、processingを使ってやっていこうと思います。 processingのインストール processingのインストールについては他にもたくさん記事があると思うので、…

Atcoder ABC99-D GoodGrid

問題 D - Good Grid色iを色jに塗り替える時に感じる違和感と、色が塗られたマス目の情報が与えられる。この時、(i+j)%3=(x+y)%3となるような(i,j),(x,y)のマス目は全て同じ色に塗らなければならない。感じる違和感の最小値を求める。 解説 全探索をします。 …

yukicoder No.643 Two Operations No.2

問題 No.643 Two Operations No.2 - yukicoder解説 この解説は多分悪い例として見ていただくのが良いと思います。 考察のできる人は、公式解説通りに考えられるのでしょう。でも僕にはそんな思いつきはありませんでした。ならマシンパワーに頼るしかない、と…

yukicoder No.739 大事なことなので2度言います

問題 No.739 大事なことなので2度言います - yukicoder 解説 文字列を半分に切って、同じかどうか判定します。文字列を抽出するsubstr(開始index, そこから何文字か)を利用すると簡単にかけます。 substr()の使用例は以下のような感じです。 string s="abcd…

processingでエクスポートすると画像が出ない話

processingは、「アプリケーションとしてエクスポート」すると、.exe(Windows)や.app(Mac) などの形式で出力できます。 しかし画像ファイルを扱っていた時、単に出力しただけでは起動ファイルを実行しても画像が表示されません。 解決策 出力前にコーディン…

ノイズ木構造

ノイズ木構造再帰とノイズでえっさほいさとhttps://t.co/L4cClmSyyP#processing #creativecoding pic.twitter.com/4InhLRMLSg— string s="ごつちやん"; (@gotutiyan_kapi) October 8, 2018再帰関数で二分木をどわーっと書いて、点をノイズで揺らしてみました…

ランダムウォーク2

先日のランダムウォークを改良しました。 gotutiyan.hatenablog.com方向ベクトルを斜めにして、軌跡を点線に。さらに円の内部を動く色付きのものと、円の外を動く白色のものに分けてみました。ランダムウォークをもう少し改良〜コードと解説は以下からhttps:…

processing: ArrayListのadd()で配列の要素が全部同じになった話

ArrayList::add()の様子がおかしい・・? 見事にハマったので感想をば。ランダムウォーク - gotutiyan’s blog このランダムウォークを実装しようとしたとき、円の軌跡を残すために前100フレーム分の座標をArrayListに格納して管理しようとしました。このとき…

ランダムウォーク

TLで見かけたランダムウォークをProcessingで実装しました。ランダムウォークを見たので描いてみました。これすごく好きです。実装解説とコードは以下から。https://t.co/drS6Pxb2H5#processing pic.twitter.com/Ss7Bu3VyDo— string s="ごつちやん"; (@gotut…

2018/9/4 虹色四角の周期性回転

虹色の四角を何重にも描いて、回転をすることで良い感じになりました。 やってることはよくある回転ですが、何回見ても綺麗ですね。 float seed[]=new float[250]; void setup(){ size(500,500); colorMode(HSB,360,255,255); for(int i=0;i

ABC 108(9/1) A,B,C問題の思考過程

なんか3完で58位を取れたので思考過程を書きます。珍しくA→C→Bで解きました。 A問題 簡単な掛け算で解けそうでしたが、その式を考える時間で愚直ループ解を実装できそうだったのでそっちにしました。偶数の個数と奇数の個数を数えて掛け算します。 int ma…

アステロイド曲線

アステロイド曲線で遊びました#openframeworks コードは以下からhttps://t.co/Lljyp5LFpN pic.twitter.com/XLAQYIpiB6— string s="ごつちやん"; (@gotutiyan_kapi) August 9, 2018 この前にリサージュ曲線を描きましたが、次はアステロイド曲線です。リサー…

リサージュ曲線

リサージュ曲線を描いてみました。 リサージュ曲線はx,yを媒介変数表示することで表現できます。 以下のサイトのリサージュ曲線の項を参考に、プログラムで表現してみます。係数のsizeは、リサージュ曲線の完成形の、縦横の大きさを表します。 x=size*sin(3*…

ACM-ICPC 大崎(Osaki) 

問題 Osaki | Aizu Online Judge電車が走行する時間帯が与えられるので、最低電車が何台あれば運行できるかを出力する。解説 入力の運行時間が少しでも被っていれば、その時間帯は複数の電車が運行しないと矛盾してしまいます。よってすべての運行時間を見て…

ACM-ICPC When Can We Meet?

問題 When Can We Meet? | Aizu Online JudgeN人分の空いている日程が与えられるので、M人以上が参加できる日程の中で最も多くの人が参加できる日程を出力します。同じ人数参加できる日が複数存在する場合、一番早い日を出力します。解説 N人分のデータが与…

ACM-ICPC 「月曜土曜素因数」

2008のB問題です。問題 Monday-Saturday Prime Factors | Aizu Online Judge 素数とは、「1と自分以外に約数を持たないもの」です。普段はこれを「すべての自然数」について考えていますが、これを「7で割ると1または6余る数の集合」に絞って考えるとど…

processingとopenframeworksを比較してみる

processing(以下P)やopenframeworks(以下OF)を使ってグラフィックを創作する人はたくさんいて、中にはコードを公開している人もいます。普段僕はprocessingを使っているけど、この人の公開しているコードはopenframeworksなのか・・と読むのを諦めてしまう…

掻き分けて、円

マウスカーソルから円が逃げます。「掻き分けて、円」マウスカーソルから円が逃げます#openframeworks コードと解説は以下からhttps://t.co/yYp6YpQ2Lz pic.twitter.com/qYkEfF0DcE— string s="ごつちやん"; (@gotutiyan_kapi) May 25, 2018 たまにはマウス…

フレア

今までで一番好きな見た目の作品です!見た目がフレアっぽいのでね。「フレア」すごく気に入りましたね、うん#openframeworks コードとその解説は以下から。https://t.co/6wpsCXPyji pic.twitter.com/ZaczGONb9V— string s="ごつちやん"; (@gotutiyan_kapi) …

Processingでブロック崩しを作る

ブロック崩しを作ります。完成図は以下のツイートの通りです。今日部活でブロック崩しの話題が出たのでそれっぽく実装。いくつかテクを思い出したので、それを実装したらだいぶそれっぽくなった。 pic.twitter.com/52sAIZVs6L— string s="ごつちやん"; (@got…

AOJ-ICPC 「Prime Gap」

問題 Prime Gap | Aizu Online Judge素数を並べた要素数10^5の数列 { 2,3,5,7,11,13,17....1299709 } がある。この時、「prime gap」を考える。例えば、10であるときには、数列の[7 11]の間に入るので、prime gap は11-7=4となる。解説 上の問題文は要約です…

AOJ-ICPC 「君のプライバシーを守れ!」

問題 Save Your Privacy! | Aizu Online Judge解説 少し入力がめんどくさいのですが、一つずつ流れを追えば大丈夫です。結局、解答が定まる時は、「各データセットの最後にあるK個ある番号を、全部知っている構成員がただ1人いる時」です。情報を漏らした構…

AOJ-ICPC 「審判は君だ!」

問題 You Are the Judge | Aizu Online Judge解説 問題の方針は「ICPCの順位づけ」と変わりません。ほぼ同じ問題です。 gotutiyan.hatenablog.com正解したかどうかのAC、不正解数のWA、ペナルティのtimをそれぞれ準備して、R個のデータについて格納していき…

AOJ-ICPC 「王様の視察」

問題 King's Inspection | Aizu Online Judge解説 まずはアルファベットをずらしていくため、順番通りに並べた配列を用意します。 alp[]={'a' , 'b'..'z','A'....'Y','Z'} のような配列です。また、「いくつずらすか」を保存した配列は何周もする可能性があ…

AOJ-ICPC 「かけざん」

問題 Kakezan | Aizu Online Judge解説 値は文字列で管理するのが良いですね。 文字列長より1少ない数だけforを回して、文字列をstring::substr(開始位置, 何文字切り抜くか)で分割の仕方を全探索し、結果が最大になったものを次に持ち越す感じです。文字列…