Yuki猫のおうち

気ままに自由に日々を生きるエンジニアのブログ

ABC066 B - ss

今日の問題

atcoder.jp

今日の言語

golang

所要時間

21m 56s

私の解答

github.com

感想

golang、文字列をそのまま配列として扱えるのは楽ですね。
今回は部分配列を取り出すとき、golangだと s[開始index:終了index+1] だと知らずにずっと悩んでいました。

一度 A Tutor of Go をやったほうがいいかもしれませんね。

	s := "0123456789"
	fmt.Println(s[4:10]) // -> "456789"
	fmt.Println(s[4:])   // -> "456789"
	fmt.Println(s[:10])  // -> "0123456789"
	fmt.Println(s[:])    // -> "0123456789"

プライバシーポリシー

当サイトに掲載されている広告について

当サイトでは、第三者配信の広告サービス(Googleアドセンス)を利用しています。
このような広告配信事業者は、ユーザーの興味に応じた商品やサービスの広告を表示するため、当サイトや他サイトへのアクセスに関する情報 『Cookie』(氏名、住所、メール アドレス、電話番号は含まれません) を使用することがあります。
またGoogleアドセンスに関して、このプロセスの詳細やこのような情報が広告配信事業者に使用されないようにする方法については、こちらをクリックしてください。

当サイトが使用しているアクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。
このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。
このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。
この規約に関して、詳しくはこちらこちらをクリックしてください。

当サイトへのコメントについて

当サイトでは、スパム・荒らしへの対応として、コメントの際に使用されたIPアドレスを記録しています。
これはブログの標準機能としてサポートされている機能で、スパム・荒らしへの対応以外にこのIPアドレスを使用することはありません。
また、メールアドレスとURLの入力に関しては、任意となっております。
全てのコメントは管理人であるYuki猫が事前にその内容を確認し、承認した上での掲載となりますことをあらかじめご了承下さい。
加えて、次の各号に掲げる内容を含むコメントは管理人の裁量によって承認せず、削除する事があります。

特定の自然人または法人を誹謗し、中傷するもの。
極度にわいせつな内容を含むもの。
禁制品の取引に関するものや、他者を害する行為の依頼など、法律によって禁止されている物品、行為の依頼や斡旋などに関するもの。
その他、公序良俗に反し、または管理人によって承認すべきでないと認められるもの。

最終更新:2019年 12月 3日

ABC064 C - Colorful Leaderboard

今日の問題

atcoder.jp

今日の言語

golang

所要時間

2時間

感想

問題としては簡単な部類でしたが、golangをちゃんと書いたことがなかったのでgolangの記法を調べていたりして時間かかっちゃいました。

あと、問題文の「レートが3200以上になると色を自由に変えることができます。」の部分を読み違えていて、最大値をmax8と勘違いしていたので何度かWA出しました。

問題文はちゃんと読みましょう...

2018年の抱負

2017年はこのブログ放置しすぎたので、2018年は何かやります。

 

一年半ほど職業プログラマとしてphpをガリガリ書いてきて、設計思想とかメモリ効率のいい実装とか、色々知識はついていると自負しているんだけれども、それを全くアウトプットしてないなぁと。

 

業務に関わる話なのでそのまま書けるわけでもないというのもあるけれど、自宅で全くプログラミングしなくなったのも要因の一つかなぁと。

 

流石にエンジニアとして死んでるよなぁ、まずいよなぁ、と思ってはいるものの2017年は結局行動しないで終わってしまった……

 

ので、直近の行動しますよ宣言をここに書いておきます。

 

1.データベーススペシャリスト試験受けます

2.競プロ始めます

 

デスペは春試験の合格を目指して頑張ります。

競プロは、1日1問とかのスローペースな感じで毎日PCを開いてコードを書く習慣をつけられたらいいなぁ、と思っています。

[php]phpの文字列比較時に自動型変換されているのを知らなくてハマった話

違う文字列なのに一致する...?

phpは型の制約が緩い分、意図しないところで勝手に型変換されていたりして困っちゃうことが時々あります。

例えば、文字列の比較を==で行うと、以下のような驚きの結果に。

$ echo "5seq" == 5; // true
$ echo "3.0" == "3"; // true

これは、==で整数値と文字列を比較する際、文字列を内部処理でint型にキャストしてしまっていることが原因です。

どうすればいいのか?

文字列の比較の際には===を使うことで、明示的にstringでの比較を行うことができます。

$ echo "5seq" === 5; // false
$ echo "3.0" === 3; // false


また、数字での比較を明確に行いたいならば、is_numeric()メソッドで文字列が数字であることを保証するという方法が取れます。
formから受け取ったユーザ入力を扱う場合などは、面倒ですが比較の前にこの処理をはさんでおくと確実です。

$str = "5sec";
if(is_numeric($str)) { // ここでfalseになる
  if($str == 数字) {
    ...
  }
}

あるいは、扱う文字列が明確に数字である場合などは、あらかじめ明示的にキャストしてしまうという手もあります。

  $str = (int)"3min";
  if($str == 3) { // true
    ...
  }


型が緩いと便利ではありますが、コードを書く際はしっかりと意識しないといけませんね。