投稿

特定の値まで素数を生み出すアルゴリズム in Python3

イメージ
特定の値まで素数を生み出すアルゴリズムとか 以下のようにリストで真偽値を管理するやり方で書くといいらしい。 Elements of Programming Interviews in Python  より。 # Given n, return all primes up to and including n. def generate_primes(n): primes = [] is_prime = [False,False] + [True] * (n-1) for p in range(2,n+1): if is_prime[p]: primes.append(p) for i in range(p*2,n+1,p): is_prime[i] = False return primes n = 100 print(generate_primes(n)) # [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

オンライン英会話(レアジョブ)を始めてほぼ毎日英会話をする生活が6ヶ月目に突入したわけですが。

イメージ
地道に継続中・・・ オンライン英会話だけの限界 実はこうなることはわかっていたのさ! 地道に継続中・・・ はい。 オンライン英会話を始めたのが8月でもう2月です。6ヶ月目に突入しました。 初期に一回サボったのとサービス自体のお休み(クリスマスと正月)以外は毎日何かしらのトピックについて英語で会話しています。 まぁこの記事読む人は「お前6ヶ月近く毎日やってるならちょっとは喋れるんだろ?お?」っていう感じの人が多いかと思います。 なんか収益化しているブログとかだと「英会話を続けた効果が凄すぎた・・・!!」みたいに色んな効果とかを派手に装飾したりSEOに特化したりとかでアクセス数を上手に稼いでいますが、このブログは今の所Google Adesenseの認可すら降りていないのでアクセスを集めたところで何の意味もないです。 なので一般人が英会話を地道にやってたらどうなるのかをリアルに書いていくのがいいのかなーって感じです。 それにしても僕もお金が欲しいのでAdesense申請したんですよね。でも申請してからかれこれ3ヶ月くらいGoogleさんから返事ないけど、僕の申請は次元の狭間にでも落っこちて帰ってこれなくなったんですかね。 Googleさんお返事くださいお願いします。 オンライン英会話だけの限界 ある程度詰まらずに話せるようにはなってきました。 僕が受けているのが実践ビジネスっていうビジネス英会話(月1万くらいだったはず)のコースなので、それっぽい表現を覚えたりとか、あとは困ったときに単語をググったらコミュニケーションで困らないくらいにはなっています。 これは嬉しい。 継続は力なりですね。 一方で、同じ語彙ばかり使っている、というのが(個人的に)かなり目立つようになってきました。 便利な表現を覚えるとそれ頼みになりがちなんですよね。 個人的に好きな英会話本で ペラペラビジネス という本があるんですが、そこで便利な定型文の一部だけ変えて使い倒せ!みたいなことが書いてあるんですね。 こと言語に関してはまさにその通りだと思うんですけど、僕の場合はそこの便利さにかまけて語彙とか表現を増やそうという努力をしてなかったというのが大きいです。 とにかく受け身で受けているだけ、そんな感じでした。まぁ少しづつ増えてはいるんですけどね ペー

Pythonでリストの中から被っている値を見つけよう!!LeetCodeの解法例あり

イメージ
リストの中から被っている値を見つけよう!! 基本 問題 解法 改良前 改良後 リストの中から被っている値を見つけよう!! という話。 見つけてその値を削除するなり、被っている値の数を数えるなり、被っている値は何なのかを返すなりは別にいいとして、個人的な方法をメモ代わりに取っておく。 基本 今回は考えやすいようにLeetCodeの問題を例に考えてみます。 問題 例えばこちら。 287. Find the Duplicate Number 難易度はMediumです。 問題としては与えられた数字のみのリストの中に1つだけ2つ存在する値があるのでそちらを探して欲しいという問題です。 例としては以下のような感じ。 Example 1: Input: nums = [1,3,4,2,2] Output: 2 Example 2: Input: nums = [3,1,3,4,2] Output: 3 Example 3: Input: nums = [1,1] Output: 1 Example 4: Input: nums = [1,1,2] Output: 1 解法 改良前 これの解放としてパッと思い浮かぶものとしては、二つのfor文で二つの値を比較しながら被っている値があれば行いたい処理を行う、というもの。 ただ、与えられたリストがソートされていないのでまずソートしないとその比較はできなくなります。 試しにPython3で書いてみました。 class Solution : def findDuplicate ( self , nums : List [ int ] ) - > int : ans = 0 nums = sorted ( nums ) for i in range ( len ( nums ) ) : for j in range ( i + 1 , len ( nums ) ) : if nums [ i ] == nums [ j ] : ans =

Arrayでのインクリメント方法で詰まったのでメモる。

イメージ
Arrayでのインクリメント スパッと思いつかなかったのでメモメモ。 ちなみに具体例としては、 array1 = [1,1,1] array2 = [1,7,9] だったら array1 = [1,1,2] array2 = [1,8,0] みたいな感じになるやつ。 実はLeetCodeでも解いたことがあったけど、 Plus One どうせならPythonっぽい答えを作ってみたかったので色々調べた感じ下のやつが良さげ。 def increment ( A : List [ int ] ) - > List [ int ] : A [ - 1 ] += 1 for i in reversed ( range ( 1 , len ( A ) ) ) : if A [ i ] != 10 : break A [ i ] = 0 A [ i -1 ] += 1 else : if A [ 0 ] == 10 : A [ 0 ] = 1 A . append ( 0 ) return A といった感じで行ける。あと読みやすい。 実行してみたら速度も気のせいか少し速くなった。 元々の解答 class Solution : def plusOne ( self , digits : List [ int ] ) - > List [ int ] : if digits [ - 1 ] < 9 : digits [ - 1 ] += 1 return digits elif digits [ 0 ] == 9 and len ( digits ) == 1 : return [ 1 , 0 ] else : digits [ - 1 ] = 0 digits [ 0 : - 1 ] = self . plusOne ( digits [ 0 : - 1 ] )

Apple Watch SEを買った話。

イメージ
Apple Watch買ったよ!! どのモデル? 使い心地どうなん? Apple Watch買ったよ!! という話です。 SEが出てから気になってはいたのですが、他に欲しいものを買ったりしていたので買っていませんでした。 少し残業の時間が増えて残業代で何か買うかーとなって家電量販店で実物を見たら超絶欲しくなりました。 手に入ると思うとそのことばかり考えてしまって精神的にめんどくさくなったので思い切って買っちゃった☆ どのモデル? SEの44mm です。 Series6を買う勇気はないが、Series3はもう古そうでなんか嫌だったのでSEに。 38mmは実物が思ったより小さくて数千円の差なら大きい方を買った方が見やすいかなーと。 後、運動(主に筋トレ)をすることが多く、特に最近は有酸素運動をすることが多かったのでNikeモデルにしました。 店員さんに聞いたら 本体の壁紙(Nikeロゴの壁紙は限定らしい?) ベルトが違う(ゴムの穴があいているやつ) くらいの差しかないらしいです。 まあ汗かくだろうし壁紙にNikeのロゴ入るとかええやん?素敵やん?という感じがしたのでNikeモデルにしてみました。 使い心地どうなん? 買ってよかったです。 やっぱり運動の情報が可視化されるのはモチベーションに大きく寄与するなあとしみじみと感じる今日この頃。 細かい歩数とか、消費カロリーを算出してくれるのはiPhoneではしてくれませんでした。 Apple Watchをつけているとその日の運動量に応じて、あ、少し消費カロリー少ないな。ちょっと歩くかー、とか、今日は十分動いたからもう休もう。みたいな感じで細かい調節ができる点が分析好きな僕にはあっています。 個人的な不満としてはジムの一部の有酸素マシンの消費カロリーを正確に測定してくれないところ。 あと、有酸素前にワークアウトをセットすると心拍数とかの測定をしてくれるものの、マシンの方の測定値と少し数値の開きが起こる。 動きを検知してくれない場合に途中でワークアウト終わった?みたいな通知が飛んでくるのも少しウザい。 後筋トレのメニューのカロリーを測る方法はなさそう?まああってもいちいちセットするのはめんどくさいし、多分測らないんだろうけど。 あ、あと心電図機能はついてないみたいで

Traceback (most recent call last): File "docker-compose", line 3, in File "compose/cli/main.py", line 67, in main File "compose/cli/main.py", line 123, in perform_command File "compose/cli/command.py", line 69, in project_from_options File "compose/cli/command.py", line 132, in get_project File "compose/cli/docker_client.py", line 43, in get_client File "compose/cli/docker_client.py", line 170, in docker_client File "site-packages/docker/api/client.py", line 188, in __init__ File "site-packages/docker/api/client.py", line 213, in _retrieve_server_version docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))というエラーが出た話

イメージ
docker-compose upをしてもこれしか出ないので色々調べてみた。 OSX Catalinaでのこと。 Traceback (most recent call last):   File "docker-compose", line 3, in <module>   File "compose/cli/main.py", line 67, in main   File "compose/cli/main.py", line 123, in perform_command   File "compose/cli/command.py", line 69, in project_from_options   File "compose/cli/command.py", line 132, in get_project   File "compose/cli/docker_client.py", line 43, in get_client   File "compose/cli/docker_client.py", line 170, in docker_client   File "site-packages/docker/api/client.py", line 188, in __init__   File "site-packages/docker/api/client.py", line 213, in _retrieve_server_version docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory')) 権限が足りない、など色々な記事がヒットしたが、根本的にそもそもDockerアプリを起動してないのが問題だったというオチ。 ちゃんとメニューバーにDockerのアイコンが表示されていてDocke

レアジョブ英会話を100回受講した話。

いぇーい。 タイトルの通り、100回続きました。 ツイートにある通り、101日で100回消化しました。 飽き性だけどレアジョブ100回続いてて良かった ちなみに101日で100回消化したのでまあまあ過密スケジュール 最低限の英会話ができて今後も英語を勉強する意欲のあるITエンジニアに興味がある企業さん、いかがですか?(満面の笑み) pic.twitter.com/jy4Uf4AwgT — くえはる (@KueharX) November 29, 2020 留学経験とかないので恐らく今までの人生の中で最も英語を話した101日でした。 いうて100回がどれくらいすごいかといっても50時間しか話してないんですけどね。 個人的にはまだまだ英会話弱々マンで結構困ることも多いです。 続け方とか。 何も考えずにただ朝起きて夜寝るまでの間に予約をぶち込んで受けるだけです。 学習効率とか発音とか気にせずにとにかく受ける。 そのためにはお気に入りの先生を見つけることが手っ取り早くて、やりやすいなって人を見つけて、お気に入り登録して、レッスンが終わったら次の日もその先生で受講可能かを見る。無理そうだったら総合評価なりブックマーク件数が多い順にソートして予約。あーだこーだ考えるよりも経験を積むことを意識した方がええんちゃう、知らんけど。 後、僕はビジネス英会話のコースなので地味に1万くらい月に払ってるんですよ。決して高くはないけど1万あったらまあまあ色んなことできますし、元を取ろうとする貧乏人根性も一つ要因としてあったかと。お金は大事!! とかこれだけ色々いってますけど、101日の内1日サボってるんですよね。これは仕事終わりに外食に行った時に食べたものが当たったみたいで、腹痛でとてもじゃないけど受けられなかった時です。しょうがないね。 続けると何がいいかって、英会話が当たり前の日常として定着してくるところですかね。 最初の方はまた英会話しないといかん・・・鬱だ・・・って感じで苦手意識しかなかったんですけど、今やそれが当たり前。なんなら今日こういうフレーズ使おう!みたいになってるあたり、こうやって人間って成長していくんだなぁと(しみじみ)。 これから。 語学の勉強に終わりはないって良く聞くので、まぁ一先ず続けていくつもりではあるんですが、どこかのタイミングで英語を使って仕事をできる環境に身