相変わらずfolza horizon4をプレイしてます
このゲーム本当にすごいですね…
いまだに底が見えないというかまだまだ遊べる余地があるというか
レースの種類だけでもそこそこあるし、サイドストーリー的なのも非常に充実してるので、いつになったら終わりが見えてくるのだろうかって感じです(;'∀')
チューニングまわりが若干物足りないのを除けば、ほぼ最高のカーシュミレーションゲームなのではないでしょうか(/・ω・)/
皆さんもぜひプレイしてみてください
このゲーム本当にすごいですね…
いまだに底が見えないというかまだまだ遊べる余地があるというか
レースの種類だけでもそこそこあるし、サイドストーリー的なのも非常に充実してるので、いつになったら終わりが見えてくるのだろうかって感じです(;'∀')
チューニングまわりが若干物足りないのを除けば、ほぼ最高のカーシュミレーションゲームなのではないでしょうか(/・ω・)/
皆さんもぜひプレイしてみてください
何がとは言いません
こんにちは、鳥居です。
今回は、以前にもちらっと紹介した「folza Horizon4」というゲームの感想を徒然なるままに書きつづっていきたいと思います。
とりあえずこのゲームが何かと一言でいうと、所謂「レースゲーム」です。プレイヤーが自分で決めた車に乗り込んで、レースなどで勝っていくゲームです。
なのですが、「自由度が高い!!」
本質的にはただ車に乗って道路を走るだけのゲームなのに、それでも相当な自由感を味わうことができるんです。
まず、レースをしていないときにも車を走らせることが可能なんです。
しかもそのマップ自体もそこそこ広く作られていて、一般的なオープンワールドゲームよりは少し規模か小さいかもしれませんが、それでもかなりの距離の道路を走行することが可能なんです。
更に、プレイヤーが特定の行動をしているとRPGにおける経験値のようなポイントがたまっていくのですが、それもまたプレイするときのモチベーションになるというか、純粋に楽しさに繋がっている感じです。
そしてもう一つ、このゲームの特徴として「グラフィックの美しさ」があげられます。
まあね、リアルなんですよ。本当に普通の公道を走っているような感覚を味わえて。光の加減であったり、季節の移ろいに応じて景色も変化したりするのですが、それらのどれをとってもまるで、「今自分たちがいるこの世界が丸ごとゲームの中に収まっている」かのような臨場感を味わうことができて、最高です。
是非皆さまもこの「folza Horizon4」を購入してみてはいかがでしょうか。買って損はない一本だと思います。(pc性能が些か高いものが求められるのが難点ですが…)
詳しいことは後ほどとさせてください…orz
こんにちはです。鳥居です。
今回は二分探索についてまとめていこうと考えています。
とはいえ流石に私なんかより皆さんのほうが二分探索について詳しいと思うので参考にはならないとは思うのですが、、、
とりあえず二分探索の具体的な方法について書くと、
・あるソートされたリストから特定の条件を満たす値(ある数未満の中で最大の値など)を求めるとする
・適当にとても小さい値ととても大きな値(それぞれ-INFとINFとして定義されることが多いですね)をとる。
・それらの値を足して2で割った数(中央値)より大きければ中央値を小さいほうの値に再設定し、小さければ中央値を大きいほうの値に再設定することを繰り返す。
・最終的に小さいほうの値と大きいほうの値の差がなくなった時求めたい値が出てくる
こんな感じですかね。…相変わらず説明が下手だorz。
さて、この二分探索ですが、普通の探索と比べて何が良いのでしょうか?
まず、「走査したいリストの要素数が比較的大きくても計算量が少なくて済む」ところですね。
例えば要素数が10^18ほどあるリストだと、普通の探索では最悪それに比例した時間(10^18)がかかってしまいますが、これが二分探索だとlogがつくおかげでlog10^18=18*log10≒54と、圧倒的に計算量が小さくなります。これは驚きですね。
また、「あるN個の要素からなるリストから二個値を取り出して特定の値を求めたい」時なども、通常はN個要素それぞれに対してN-1個の要素を試していくとおおよそN^2の計算量がかかることになってしまいますが、片方の要素を全て試し、もう片方の要素を二分探索するといった方法を用いればNlogNの計算量となり、これも大幅な時間短縮となります。
このように、アルゴリズムを工夫するだけで計算にかかる時間が驚くほど速くなるというのは非常に魅力的です。是非自分でも取り入れていきたいですね。
こんにちは、鳥居です。
今日は、昨日参加したcodeforcesについて書いていきたいと思います。
というわけで結果なんですが、見事に1完しましたー(^_-)-☆パチパチパチ
はい、爆死しました。
B問題はまだ決まってない値の両隣の値のminとmaxを求めて2で割ればよかった話だったんですね…orz
まだまだ精進が足りないです(*_*;
今ちらっと見たところC問題も計算量O(1)で解けるような問題だったっぽいですね。
常々思うのですが、こういった「難易度自体はそんなに難しくなくても一考察必要」な問題で変に躓かないようにするためにはどうすればよいのでしょう…難しい。
初めましての方は初めまして、鳥居です。
今回は桁DPというやつにチャレンジしてみたいと思います。(実は記事作成途中にデータが吹っ飛んでしまい、一からまた書き直しているところです。…完全に自業自得orz)
https://atcoder.jp/contests/abc154/tasks/abc154_e
まず入力ですが、int型どころかunsigned long long型でもオーバーフローしそうなので、string型で受け取っておくことにします。(C++以外の言語ではこれ以上の値でも受け取れる型があるようなので、それを使ってもいいかもしれません)
さて、肝心の解き方ですが…どう解くんでしょう?(;'∀')(オイオイ)
自力で解くのはあきらめて(はえーよ)、他の方の桁DPについての記事を参照してみたいと思います。
https://torus711.hatenablog.com/entry/20150423/1429794075
「ある整数N以下の整数で、かつ特定の条件を満たす値を求める」ときに使えるのが、桁DPというものっぽいです。まさに今回のような問題ですね。
そして具体的な方法としては、上の桁の値から見ていくDPを考えていくようです。こういったときに桁ごとの値を参照しやすいといった面でもstring型で値を受け取ったほうがいいというメリットがありそうですね。
そしてdpを回していくわけですが、どうやらパラメータとして
・上から見て行ってすでに決まっている桁数
・求めたい値の条件(この場合だとゼロでない値の数[1~3])
そしてもう一つ
・その桁の次に小さい桁を見たときに、その桁の値がすでに決まっている桁と合わせて入力として与えられた値未満かその値と同じか
というフラグが必要になってくるようです。(相変わらず自分で書いてても意味が…(;'∀'))
例えば入力として12345が与えられ、上から二けた目までの数(12~)までが決定しているとして、
・3桁目が3未満だった場合には、それより下の桁は何を選んでもよい。
・3桁目がちょうど3だった場合には、それのさらに一個下の値は4までしか選べない
・3以上の値を3桁目に入れるわけにはいかない
ので、このようなフラグをまえもって準備しておくと後の計算が楽になるっぽいです。
そして、上から順々に値を埋めていって最後に求められているクエリを提出すればよい…らしいです。(初心者なので自信ないorz)
桁DPについて更に知りたい方は(私が書いたこんな残念な記事より)ほかの方の記事を参照してください。(一番下にあげたmaspyさんという方の解法は今回紹介したものとはまた別の解法となっているようなので、特にご覧いただくのをおすすめします。)
http://drken1215.hatenablog.com/entry/2019/02/04/013700
https://maspypy.com/atcoder-%e5%8f%82%e5%8a%a0%e6%84%9f%e6%83%b3-2019-02-09abc-154
…いや、だから何だって話なんですが…(;'∀')
父のやっているレースゲームを見ていると、やっぱりドライブっていいもんだなあと。
まあ、流石にレースゲームのように公道を自由気ままに走ってると警察の方につかまってしまうので行くときは安全運転で行きますが…(*_*;
こういう、「普通ではできないことをシミュレーションしてできる」というのはゲームの醍醐味かもですね。
どうも、鳥居です。
ここ最近父がレースゲームに興味を持ち出したようで、folza horizonというゲームをやっています。(と言っても金欠なのでまだ体験版しかプレイできていませんが…orz)
そういえば自分も昔がグランツーリスモとかやってたなあとしみじみ。全くレースゲームの腕は上がりませんでしたが…orz
皆さんこんにちは、重傷を負っている鳥居です。
前回さらっとモナドに触れたり触れなかったりして結局大やけどしてしまったのですが、今回はさらにモナドについて深く掘り下げたり掘り下げなかったりしたいと思います。もしかしたらその過程で命を落とすことになるかもしれませんが、その時は黙とうでもしてやってください。
さて、前回はMaybeモナドの実装内容について語らせていただきました。その中で、
・return関数という、素のa型のxという値をJust xというMaybe a型の値にして返す関数
・>>=演算子という、Maybe a型の値と「a型の値を引数にとり、Maybe b型の値を返す関数」を引数にとり、Maybe b型の値を返す演算子(関数)
が定義されていることを説明しました。…説明したつもりです。
もう少しMaybe型における>>=演算子について説明すると、
・値としてNothingが渡された場合にはそのままNothingを返す
・値としてJust xと関数f(a型の値を引数にとり、Maybe b型の値を返す関数…くどいですねすいません)が渡された場合にはxにfが適用された値を返す
ふるまいをするものでした。
お詫び・モナドについて詳しく調べていたところもう少しまとめる必要が出てきたのでここから先は執筆中とさせてください(;'∀')(なるべくエタらないようにしますので…)