海老名日記

海老名での暮らしからキャンプ、子育てまで語る雑記ブログ

CodilityのCyclicRotationをPythonで解いてみた

こんにちは😄えびならいふです。
今回は前回に続きプログラミングに関する話題で、CodilityというプログラミングテストのようなもののLessonをPythonで解いてみた話。
今日はその中の最初のLesson 2 CyclicRotationという問題を解いてみた。

CyclicRotation

まずはCyclicRotationがどういう問題かの説明。 入力は配列Aと自然数Kの2つで、Aの中の要素をK回ローテーションしたときにどんな配列になるかを当てれば良い。
例えば、以下のようなAとKが入力として与えられた場合、

A = [3, 8, 9, 7, 6]
K = 3

Aを1回ローテーションするとA=[6, 3, 8, 9, 7]となり、2回目はA=[7, 6, 3, 8, 9]、3回目はA=[9, 7, 6, 3, 8]となり、この例だと答えは[9, 7, 6, 3, 8]となる。
この問題は親切にヒントも与えられていて、

A = [0, 0, 0]
K = 1

の場合は答えが[0, 0, 0]となり、

A = [1, 2, 3, 4]
K = 4

の場合は答えが[1, 2, 3, 4]となると書かれている。
以上のように問題は非常にわかりやすくて単純明快なので次からは実際に解いてみる。

解いてみる

こういうプログラミングテストで注意しないといけないのは入力となる配列や変数の範囲。
配列の長さが0の時とかに処理に失敗してエラーが出るなんてこともあり得るので、最初に長さ0の場合の処理を書いておく。

if not A:
    return A

また、Aの要素が全部同じ場合はローテーションする必要がないのでこちらも書いてしまっておく*1

if set(A) == 1:
    return A

配列Aの長さ分ローテーションすると元の配列に戻るため、実際には律儀にK回ローテーションする必要はなく、Kを配列Aの長さで割った余りの分だけローテーションすれば良いのでKを以下のようにしておく。
Kが0もしくは配列Aと同じ長さの場合はそのままAを返す。

len_A = len(A)
K = K % len(A)
if K == len_A or K == 0:
    return A

ここまでくればほぼ終わり。
for文で回して一つずつ動かしてもいけるかもしれないけど、配列の長さが大きくなると少し大変なので少しだけ工夫してみる。
といっても大した工夫ではなくて、単純にsliceを使う方法。
ローテーションと言っても、後ろの数字列を前に持っていってるに過ぎないので、配列をsliceで前後に分けてそれを入れ替えればOK。

n = len_A - K # 分割位置
# 前と後ろに分割
A_a = A[:n]
A_b = A[n:]
# 後ろの数字列の後ろに元々前にあったやつをくっつける
A_b.extend(A_a)
return A_b

終わりに

今回の実装でスコアはこんな感じになる。

*1:書かなくてもエラーになったりはしないが速度考えると書いておいた方が早い

CodilityのBinaryGapをPythonで解いてみた

こんにちは😄えびならいふです。
今日はプログラミングに関する話題で、CodilityというプログラミングテストのようなもののLessonをPythonで解いてみた。
Lesson自体はたくさんあるんだけど、今日はその中の最初のLesson 1 BinaryGapという問題を解いてみた。 ちなみにCodilityは英語で書かれているので英語が読めないとつらい。。

BinaryGap

BinaryGapは、ある10進数で書かれた自然数が与えられた際にそれを2進数に変換して、11の間にある0の数を数えてその最大値を返す問題。
例えば、10進数の32が与えられた場合、それを2進数に変換すると10000010001が得られる。
この時、11の間に挟まれている0は00000 (長さ5)と000 (長さ3)になり、長い方の長さである5を返すのが正解となる。
最初の問題だけあってそこまで難しくなさそうな問題ではある。

解いてみる

ということで早速解いてみる。 まずは10進数の数字を2進数に変換する。

binary_val = format(N, "b")


普通に解くとここからfor文で回して0の数を足し算していくような感じになるのだけど、ちょっと変わった解き方をしてみる。
1で挟まれた0を抜き出せば良いので、1の文字で文字列を分割する。

splited_val = binary_val .split("1")

このあとの処理を考えるためにいくつか実例を見てみる。

"10000010001".split("1")
# ['', '00000', '000', '']
"1000001000".split("1")
# ['', '00000', '000']

splitで分割されたリストの0番目は必ず空文字になる。
これは2進数にしたときに一番左が1になるためである。
一方でリストの一番最後は、1で終わる場合と0と終わる場合があり、1で終わると空文字になり、0で終わっている場合は分割されて得られた0の文字列となる。
こうなると少し処理がめんどくさそうに見えるが、問題自体が11の間にある0の長さを数えることなので、0で終わっている場合も無視することができる。
popを使ってリストの一番最後を削除する。

splited_val.pop()


ここまで来ると後はfor文を回して文字列の長さを見ていくだけで良い。

max_val = 0
    for s in splited_val:
        n = len(s)
        if max_val < n:
            max_val = n

    return max_val

最初の空文字も少し気になるが、lenを取った時に0になるのでこちらも気にせず処理をしてしまっても問題ない。
スコアはこんな感じになる。

終わりに

今回はCodilityのBinaryGapを解いてみた。
初回とありそんなに難しい問題ではなかったが、少し特殊な解き方をしてみた。
Lesson 2からは難しい問題も増えてくるので少しずつ進めていきたい。

初めての大腸内視鏡検査

こんにちは😃えびならいふです。

今日は大腸内視鏡検査をした時の話をしたいと思う。
大腸の内視鏡検査を受けるきっかけになったのは健康診断の便の検査で引っかかったから。
便の検査は2回取って1回でも陽性反応あると再検査とかではなく精密検査受けてくださいとなるらしい。

病院探し

ということで、まずは病院探しから。
正直どこ行けばいいかわからないのでネットでいろいろ口コミとかを見る。
が、どこも似たり寄ったりでなかなか難しい。
大学病院とか総合病院は大きいのでそもそも対象の診療科以外のクチコミも入ってきて、自分の受けたい診療科の口コミを探すのも一苦労。

検査前の診察

一度大きな病院に電話してみたけど、最初の診察受けるのも予約できるのは一ヶ月先とか言われこれは厳しいなとなった。
結局妻が探してきてくれた自由が丘にある「自由が丘消化器・内視鏡クリニック」にすることに。
診察の予約もWebできるので楽チンですぐに予約できた。

予約した日に病院に行く。
ビルの5階にありエレベーターで上がって行く。
ビル自体も綺麗で病院の中も非常に綺麗だと感じた。
中はそんなに広くなくて、待合室、診察室、処置室、トイレ、端の窓際にちょっとしたカウンターテーブルとイスがあるという感じだった。
簡単な問診して、検査日を決めて検査前日の食事や検査当日の流れ、下剤等の飲み方について教えてもらう。
検査日自体はそれなりに予約も混み合っていて診察を受けて3週間後くらいになった。

検査前日

検査前日は食事に気をつける必要がある。
晩御飯を食べる時間だけでなく、朝昼晩に食べていいものもかなり制限されていて下のような感じ。

繊維の多いものとか油の多いものとかの消化に悪いものは基本NG。
この検査は前日からのご飯制限もなかなか苦しいところ。

検査当日

朝起きてもご飯を食べることはできないので水だけで過ごす。
検査は15時半からだが、下剤の薬を飲んでいくのは10時から始まる。
まずは錠剤の薬を1錠飲み、その後10時半から粉を水に溶かして作った下剤を飲んでいく。
下の写真のようなものに水を入れて自分で下剤を作る。

全部で1.8リットルという大容量の下剤を飲まないといけない。
さすがに一気飲みするとかではなく、200ミリリットルを10分ごとに飲んでいく形。
味はポカリスエットのような感じで最初の方は全然問題ないのだが、回数をこなすうちにだんだんと苦しくなっていく。
さらに追い討ちをかけてお腹も痛くなってくる。
もはや何回トイレに行ったかわからないくらいトイレに行き、90分かけて苦しみながら下剤を飲み干す。
下剤を飲み終わってもトイレに行くスピードは変わらず、結局家を出る時間も少し遅くなってしまう始末。
電車に乗って行かないといけない緊張感もあり余計不安でトイレに行ってしまう。

電車に乗りなんとか病院にたどり着くと受付を済ます。問診票や同意書を出して呼ばれるまで待つ。
それなりに人気の病院のようで自分がいる間に他にも何人か検査していたように思う。
名前を呼ばれると部屋を移動し検査着に着替える。着替える場所は壁ではなくカーテンで仕切られている感じ。
上は長袖を着てる場合は脱いで半袖のTシャツは着たままで良いとのこと。靴下もそのままでオッケー。
パンツはもちろん脱ぐ必要があり、後ろの箇所に紐がついていて簡単に開けるようになっている。

着替えが終わると脱水症状になるのを防ぐためといことで点滴を打つ。
このとき看護師のかたも優しくいろいろと話をしてくれる。
下剤飲んで病院来たところで3分の2終わってますからあと少しですよっと励まされる。
その後自分の番がくると荷物を持って移動する。
まだ鎮痛剤も打ってないはずなので少し眠いような気がした。
先生が来るまで少し時間がありその間も看護師の方が優しく話しかけてくれる。

先生が来ると検査が始まる。
最初に苦しかったら遠慮せずにすぐ言ってくださいねっと言われ痛いのかっと思ったが、その後すぐ鎮痛剤を打たれ、気がつくと検査が終わり部屋を移動していた。全く痛くもなかったし逆になにされたのか怖いくらいだった。
どのくらい時間が経ったのかもわからなかった。
ちゃんと時間を測っておくべきだった。

動けるようになると着替えを済ませて、窓際にあるカウンターテーブルに移動し、そこで簡単なお菓子とドリンクをもらって休憩する。
前日夜からなにも食べていないしすごくおいしく感じた。
食べ終わって少し休憩したあとは待合室に行き、結果の説明を待つ。
診察室に呼ばれて説明を受けて無事に検査は完遂。検査結果も異常は無さそうで一安心。

マンション購入の話: Episode 6 〜購入登録会〜

こんにちは😃えびならいふです。

モデルルーム訪問からマンション購入までのを書くこの話もいよいよ大詰め、一旦の区切りを迎える。
最初にセントガーデン海老名のモデルルーム訪問してから、今回のテーマである購入登録会までおよそ2ヶ月。
長かったような短かったような感じ。
ということで今回は以下のコンテンツで話していく!

開催場所・日程

今回の購入登録会が開催されたのは、海老名駅から小田急線で2駅行った本厚木駅にあるとある会場。
日程的には12月下旬ごろで日程の候補としては2日ほど用意されていて、それぞれ何回か実施する感じだった。
新型コロナの影響もあり、スペースも開けて実施していたため普段よりも回数が多くなっているという話も少し聞いた。

重要事項説明

重要事項説明書などの見本は前回のオプション登録会の時にも受け取っていて、必要かどうかわからなかったので一応持っていたが、その場で一式全部もらったので持っていく必要はなかった。
かなり分厚い重要事項説明書をもとに説明が行われていく。
全部説明すると時間がいくらあっても足りないので要点だけ説明される。
重要事項の説明だけで1時間以上はかかっていた。

売買契約書と重要事項説明書

売買契約書書の記入

重要事項の説明が終わるといよいよ売買契約書に署名捺印をする。
契約書だけでなく他数枚、関係書類などにも署名捺印もした。
ここでは大体の書類に実印を使う必要があるのだが、実印じゃなくてもいいものもあってややこしい。
気にせず全部実印でも良かったのかもしれないが少し気にはなったので、実印じゃなくて良いものは普通の認印を使った。
売主側の印鑑を押してもらったものを受け取れば契約は完了。
かなり大きな額の買い物ではあるが手続き自体はあっさり。

そのほかに、現在・将来小学校に入る子どもはいるか(いつ小学校か)のアンケートに答えたり、駐車場の希望調査書を提出。
マンションホームページに載せるSuumoのインタビューを受けるかどうかなどのアンケートも一緒に出す。

今後のスケジュール

今わかっている今後のスケジュールをざっとあげる。
マンションとかによって違ってくるとは思うが、他のマンション買う人も少しくらいは参考になるんじゃないかと思っている。 それぞれの細かい話はまた終わったら書きたい。

2021年9月〜10月頃

ローン申込手続会
提携ローンを利用する場合に参加する必要あり。融資承認がおりるまで1ヶ月程度かかるよう。
提携ローン以外を利用する場合はこの会には参加する必要はないが自分でちゃんとローン申し込みをする必要あり。

2021年11月30日

売買代金の支払い方法の変更受付期限
資金計画、契約名義等の変更の受付期限。これで諸々の契約内容が最終確定する。

2021年12月〜2022年1月頃

入居手続会
住宅ローン借入契約や登記の説明、火災保険の手続き、インターネット、引越しの説明などを受ける会らしい。

2021年1月〜2022年2月頃

内覧会
契約した部屋内部を確認する会。基本的には平日開催となる模様。

2021年3月上旬

残代金・諸費用支払いの案内、引渡し会の案内
自己資金の残代金や諸費用についての明細や振込口座等の案内が来るらしい。
引渡し会の日時、場所、持ち物についての連絡もこのあたりで来るらしい。

2021年3月下旬

引渡し会
部屋の鍵の受け取り。家具の搬入とかエアコンの設置とかはこれ以降可能になる。

引渡し以降

引越し後に行う行政手続き含む、諸々の手続き。
すぐではないけど、賃貸では必要なかった手続き等も発生する模様。


前回のお話(オプション登録会)↓

www.ebinalife.com

4月某日のセントガーデン海老名

こんにちは😃えびなライフです。

ついに竣工まで1年を切ったタイミング、どの程度できているのか気になるところ( ・∇・)
ということで3月に引き続き4月もセントガーデン海老名 (1000 Dream Project)の様子を見てきたので今日はその話。

桜も散り始めるくらいの頃に行って来たけども着々と建設も進んでいる模様。
B棟が少し進んでいる(?)感じで11階まで作られているでA棟C棟は10階くらいだったかなという状況だった。
1ヶ月に1階くらいは進むくらいのペースでは進んでいるのかな。

f:id:ebinalife:20210419035411j:plainf:id:ebinalife:20210419035734j:plainf:id:ebinalife:20210419035641j:plain
セントガーデン海老名の建設状況

マンションだけ見て帰るのももったいないので三川公園にも行って来た。
桜も散ってきている頃合いだからかコロナの影響なのか人も少なく落ち着いた雰囲気だった。
桜の散り始める前だともう少し賑わっていたのかな。

f:id:ebinalife:20210419035355j:plainf:id:ebinalife:20210419035348j:plain
三川公園

相模川沿いにある三川公園は子どもを連れて過ごすには落ち着いてて良いように思える。
多摩川にたまに行くがそっちはランニングやサイクリングをしてる人で溢れていて落ち着いて過ごすというのには向いていない。
こういう公園があるのも海老名の良いところだと思う。

ロマンスカーミュージアムもまだオープンしていないが、もう建物もできていていい雰囲気だった。
横からチラッと見えてますね!

f:id:ebinalife:20210419035341j:plainf:id:ebinalife:20210419035335j:plain
ロマンスカーミュージアム

マンション購入の話: Episode 5 〜オプション登録会〜

こんにちは😃えびならいふです。

今日はセントガーデン海老名の購入に関するお話。
前回はオプション説明会について書いて、新築分譲マンションのオプションについていろいろと説明した。
今回は前回の翌週に行ったオプション登録会について。

このオプション登録会のちょっと前に要望書の〆切が終わり、抽選かどうかの案内の電話がかかってきていた。
幸いにも私たちのところは被っておらず抽選なしで購入が決まった。
後で聞いた話によるとやはり希少性の高い、今回のセントガーデン海老名の場合だと2LDK、4LDKの部屋で被りやすかったらしい。

今回も前回(先週)に引き続き朝一の時間からの予約だったため、朝早くから海老名に向けて出発。
ついたら前回と同様にビナガーデンズでベビーのお世話。

オプション登録会の内容は想像がつくと思うが、前回オプションの説明を聞いて宿題として持ち帰って考えてどのオプションにするかを決めて申し込みするもの。
その場でも見積もりを出してもらったりや、もう一度説明を聞いて最終判断をすることもできるがほぼ家に持ち帰って決まってはいた。
見本が用意されているものもあるのでそれを見たり、もう一度モデルルームの部屋を見てどうかを確認することもできる。
最終決定をして申込書を書いてオプションのあれこれは終了。我が家は結局70万くらいのオプションを注文した。
これが平均的なのか少ない方なのかはわからないが、割と平均くらいなのではないかと勝手に予想している。

オプションの申し込み自体は1時間程度で終了して、残りは営業担当の方にバトンタッチして今後の契約系の説明を受ける。
オプション登録会の翌週が重要事項説明会(契約会)になっており、重要事項説明書、契約書、その他資料の見本や駐車場の抽選申し込みの用紙などをもらう。
その後、手付金の振込に関して振り込み先などの説明を受ける。
最後に重要事項説明会の会場や日時に関して説明を受ける。多くの人が一斉にやり、モデルルームには入りきらないため別の会場が用意されていた。
場所は海老名ではなく本厚木だった。コロナの影響もあり数回に分けて行われる感じ。

ここまで4回モデルルームを訪問してきたが、ここまで来てしまうとマンションを買ったという実感が湧いてきてかなり楽しみになってくる。
次回は重要事項説明会&契約会。
まだローンの本申込等があったりはするが、一旦の契約の完了という意味ではひとまずの区切り!!


前回のオプション説明会の話はこちら↓ www.ebinalife.com

初キャンプは家キャン 〜家キャンのススメ〜

こんにちは😃えびならいふです。

今日は初めてキャンプごっこ(家キャン)した時の話を振り返りたいと思う。
我が家でキャンプを始めるきっかけとなったのは、今アニメも放送されている「ゆるキャン△」の影響。
知人におもしろいと言われて読んだゆるキャン△の漫画を見て楽しそうだったし、女子高生でもできるんだったら自分たちもできるでしょっていう安易な考えで始めた。
キャンプってやってみたいけど、テントとかシュラフ(寝袋)とかいろいろ必要だしお金もかかって大変そうだからって言って断念してる人たち向けに、自分たちが最初にちょっとキャンプごっこから始めた話を話したい。

家キャン始めるまでの思考過程

いきなりテントとかシュラフとか買ってもすぐに飽きて辞めたらもったいないな〜っていう人は多いと思う。自分もそうだった。ここで買う前にキャンプを試しにやってみる方法としては、

  1. 友達と一緒にキャンプに行く
  2. 流行りのグランピングやコテージなどに泊まる*1
  3. キャンプ場でレンタルする*2
  4. デイキャンプでお試しキャンプ*3
  5. キャンプ気分をお家で、家キャン!!!

てな感じのものが考えられる。
家族や友達ですごいキャンプやってる人がいれば1つ目も全然ありだが、自分のまわりには残念ながらいなかった。
2つ目3つ目も考えとしては悪くはないが、キャンプをしようと思ったのが2月くらいの話だったのもあり、この時期いきなり泊まりでキャンプもいかがなものかとなり結局残るのは4つ目、5つ目。
デイキャンプ行くなら、タープとか欲しくなるしとりあえずミニマムにキャンプっぽいご飯を家で作って雰囲気楽しもうということで5つ目の家キャンから始めることになった。

準備編

いくら家キャンとは言えそれっぽい雰囲気でキャンプしたいということで最低限それっぽいものは準備する。
家でキャンプ感を出すためにテーブル、クッカー、ガスバーナーを購入し、椅子とかはとりあえず100均とかで買ってたようなものを使う。
テーブルは熱いもの置いても平気なものがいいよねということで、ユニフレームの焚き火テーブルを購入。テーブル自体しっかりした作りでキャンプには必ず持っていくものの一つ。


クッカーは正直いってどれも違いがよくわからなかったのでモンベルのものを購入。
特に不都合は起きていないので問題ないけど次買うときはもう少しいろいろ検討してみたい。


バーナーはCB缶のものではなく、OD缶のものを購入することにした*4
ゆるキャン△みたいにカセットコンロでやるのも全然アリだったが、キャンプを始めた時期が冬だったこともありせっかくなのでということでOD缶で使えるガスバーナーを購入。


ここまで揃えるとちょっとそれっぽくなってきた気がする。
このあたりはそれぞれ個人がキャンプにはこれは外せないというものをちょっと揃えてやってみるのがいいと思う。
あとはキャンプやっぱり合わなくて無理だったみたいな時にも、家とか災害時に使えそうなものにしておくと無駄にならないのでオススメ。

Let's 家キャン

準備が終われば実際にやってみる。
クッカーを使って料理するのはゆるキャン△でリンちゃんが作っていたお手軽スープパスタ。
家の中で調理して作って食べても、それっぽい雰囲気でやれば楽しい。

f:id:ebinalife:20210330050748j:plain:w500

まとめ

キャンプを始めたくてもハードルが高くて始められないという人も多いと思う。
いくつか始め方を挙げた中から自分にあったやり方で始めて楽しくキャンプをやってもらえれば。次回は家キャンからステップアップした話をば。

*1:テントとかシュラフとか大きいものを買わなくて良い

*2:キャンプ用品のレンタルが充実してるキャンプ場もいっぱいあります

*3:とまらないのでテントとかシュラフはいらない

*4:CB缶はスーパーとかでもよく売ってるカセットボンベ。OD缶はアウトドア用のもので寒さに強かったり、火力が強いとされているらしい