7 Days to End with You をプレイしました。
今流行の7 Days to End with Youをプレイしました。
何言ってもネタバレになるので詳しくは書きませんが。
めちゃくちゃ好き。
新しくプレイする人がいたらそのプレイを後ろから眺めたいような、そんなゲーム。
(Java)スタックとキュー
競技プログラミングで幅優先探索をやりたく、キューを実装しようとした。
C++だとStackもQueueもpushとpopで操作できるっぽいから、
Javaでも同じようにpushとpopを使ったらキューがスタックとして動作して死んだ。
Javaではキューの操作はaddとremove
System.out.println("\nQueue"); Queue<Integer> que = new ArrayDeque<>(); for(int i=0; i<10; i++){ que.add(i); } while(!que.isEmpty()){ System.out.print(que.remove()+" "); } //Queue //0 1 2 3 4 5 6 7 8 9 System.out.println("\nDeque as Stack"); Deque<Integer> deque = new ArrayDeque<>(); for(int i=0; i<10; i++){ deque.push(i); } while(!deque.isEmpty()){ System.out.print(deque.pop()+" "); } //Deque as Stack //9 8 7 6 5 4 3 2 1 0 System.out.println("\nDeque as queue"); for(int i=0; i<10; i++){ deque.add(i); } while(!deque.isEmpty()){ System.out.print(deque.remove()+" "); } //Deque as queue //0 1 2 3 4 5 6 7 8 9
Stackクラスも用意されているけど、両端キューであるDeque(デック)を使うことを推奨されている。
Haskellで.ghciファイルを編集しても反映されなかった件
Haskellインストール
$ stack ghc -- --version The Glorious Glasgow Haskell Compilation System, version 8.6.3
下記を参考にHaskellお触り中
employment.en-japan.com
日本語化対応の手順で戸惑ったのでメモ
環境:CentOS7
~/.ghciファイルが見当たらなかったので、新規作成し、記事の通り.ghciファイルに記載
import qualified Text.Show.Unicode :set -interactive-print=Text.Show.Unicode.uprint
しかし、日本語を入力しても日本語が出力されない。
GHCiを起動時に下記のようなメッセージがでている。
[vagrant@localhost ~]$ stack ghci (中略) Configuring GHCi with the following packages: GHCi, version 8.6.3: http://www.haskell.org/ghc/ :? for help *** WARNING: .ghci is writable by someone else, IGNORING! Suggested fix: execute 'chmod go-w .ghci' *** WARNING: /home/vagrant/.ghci is writable by someone else, IGNORING! Suggested fix: execute 'chmod go-w /home/vagrant/.ghci' Loaded GHCi configuration from /tmp/haskell-stack-ghci/2a3bbd58/ghci-script
なのでとりあえず「chmod go-w /home/vagrant/.ghci」を実行したところ、日本語出力ができた。
※chmod go-wは、自分以外が書き込めないようにするコマンド。
書き込み権限の問題っぽい
競技プログラミング入力メモ(Java)
友達の影響で競技プログラミングにちょっとばかりハマっている
Javaで挑むに当たり入力でよく戸惑うのでメモ(随時更新)
入力
原則nextを用いて、パースする。
nextIntとかよりnextからのパースのほうが早い。
Int
Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.next());
char[](文字列を1文字ずつ分割)
Scanner sc = new Scanner(System.in); char[] c = sc.next().toCharArray();
Scannerは実行速度が遅いらしいが、
今のレベルでscannerがボトルネックになるような問題には出くわしていない。
自作で入力用ライブラリを作成するのが一番早いが、
そこまでガチ勢じゃないのでそういう問題に出くわしたら、またちゃんと勉強する。
参考:
入出力 - てきとーな日記
↑の記事を少し噛み砕いた記事
Javaで競技プログラミングをするときの罠とテク - Qiita
なお、Scannerをよくcloseし忘れるので、入力の最後にちゃんとcloseする
sc.close();
localhostでつながらない?
Dockerを体験しようと思い導入。
wdpressの記事をもとにDocker上のコンテナでApacheを起動、
ブラウザからアクセスしようとするとつながらない
試しに172.0.0.1でつなげると違うエラーが出る
まったくわからん。
Vagrantfileを編集しIPアドレスを明示的に設定してみる。
config.vm.network "private_network", ip: "192.168.33.10"
vagrant再起動
vagrant reload
あらためてdockerコンテナのプロセスを起動し、
指定した192.168.33.10でアクセス。
できた。
何が原因でこうなっているのかさっぱりわからん。
こういうのが解析できるような技術者になるべきなんだろうけど。