投稿

特定の値まで素数を生み出すアルゴリズム 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日サボってるんですよね。これは仕事終わりに外食に行った時に食べたものが当たったみたいで、腹痛でとてもじゃないけど受けられなかった時です。しょうがないね。 続けると何がいいかって、英会話が当たり前の日常として定着してくるところですかね。 最初の方はまた英会話しないといかん・・・鬱だ・・・って感じで苦手意識しかなかったんですけど、今やそれが当たり前。なんなら今日こういうフレーズ使おう!みたいになってるあたり、こうやって人間って成長していくんだなぁと(しみじみ)。 これから。 語学の勉強に終わりはないって良く聞くので、まぁ一先ず続けていくつもりではあるんですが、どこかのタイミングで英語を使って仕事をできる環境に身

ゼロから始めるLeetCode Day112「500. Keyboard Row」

イメージ
概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day111「682. Baseball Game」 次回 その内 Twitter やってます。 問題 500. Keyboard Row 難易度はEasy。 問題としては、単語のリスト words が与えられます。 下の画像のような 英字キーボードの一行に存在するアルファベットだけで入力できる単語のみ をリスト形式で返してください、という問題です。 Example: Input: [“Hello”, “Alaska”, “Dad”, “Peace”] Output: [“Alaska”, “Dad”] Alaska と Dad は共に真ん中のキーボードの列に所属するアルファベットのみで構成されていますのでリストで返されています。 解法 class Solution : def findWords ( self , words : List [ str ] ) - > List [ str ] : first = [ "q" , "w" , "e" , "r" , "t" , "y" , "u&q

ゼロから始めるLeetCode Day111「682. Baseball Game」

イメージ
概要 問題 解法 概要 海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。 どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。 早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。 と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。 ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。 Leetcode Python3で解いています。 ゼロから始めるLeetCode 目次 前回 ゼロから始めるLeetCode Day110「1535. Find the Winner of an Array Game」 次回 その内 Twitter やってます。 問題 682. Baseball Game 難易度はEasy。 久しぶりでいろいろ忘れているのでひとまずEasy の問題を潰そうかなと思います。 問題としては、あなたは野球の試合に出場することになりました。このゲームはいくつかのラウンドで構成されており、過去のラウンドの得点が将来のラウンドの得点に影響を与える可能性があります。 ゲームの最初に、あなたは空のレコードで開始します。ops[i]はレコードに適用しなければならない第一の操作であり,以下のいずれかである. 整数 x - x の新しいスコアを記録します。 “+” - 前の2つのスコアの合計を新しいスコアとして記録します。前の 2 つのスコアが常に存在することが保証されています。 “D” - 前のスコアの2倍の新しいスコアを記録します。これは、常に前のスコアが存在することを保証します。 “C” - 前回のスコアを無効にし、記録から削除します。これは、常に前のスコアが存在することを保証するものです。 レコード上のすべてのスコアの合計を返します。 Example 1: Input: ops

2019年にTOEICでスコア800を取った時の話(昔)

イメージ
  あなたは誰? くえはると申します、会社員をしています。 MARCHレベルの大学卒です。 英語を習い始めた中学生の時から大学受験の現役の時まで英語が大の苦手で滅べばいいと思っていましたが、一年の浪人期間を経て英語の基礎はある程度しっかり固めました。 ここでの基礎は5文型がわかる、専門用語を引けば英語の小説や論文の大体の意味は分かる、というレベルの単語力、熟語力、読解力ということです。   しかし流暢に喋れるわけでもなく、リスニングもそこまで得意ではありませんでした。私大は基本的には読めればほとんど受かるので読むのにほとんどの時間を割いても割となんとかなりました。英作文が必要な学部も受けたので、当時流行っていた(今も流行っているのか?)ドラゴンイングリッシュというのを丸暗記したりはしていました。 余談ですが、ここから先スコアアップを狙っても明確なリターンがなさそう(一般的な会社員の話。要は資格手当的な)だったので、今続けている英会話を始めた、という流れになっています。 英会話はいいぞ!!   この記事は誰向き? スコア800程度なのでそこまで幅広い層には使えないかもしれませんが(TOEICはここからあげる難易度の方がここに到達するより難しいらしいので)、基本的なことをやれば目標スコアに到達できたので、基礎力はある程度あるがスコアに伸び悩んでいる方、つまりTOEIC対策に悩んでいる方にご覧いただくことを想定しています。 この記事がお役に立ちましたら幸いです。   何をどれくらいの期間やったの? ど定番の参考書だけしかやりませんでした。 TOEIC L & R TEST 出る単特急 金のフレーズ 公式 TOEIC Listening & Reading 問題集 3   公式 TOEIC Listening & Reading 問題集 4 公式 TOEIC Listening & Reading 問題集 5  これらを2ヶ月間ひたすら回しました。   勉強時はどういうことを意識していたの? 最初はまず形式慣れする事がスコアをあげるのに手っ取り早いと思ったので、とりあえず公式問題集を1冊解いて2時間の長さを再確認しました。 おそらくTOEICを受ける多くの人がそうだと思うのですが、試験のような

HSK3級を取った話。(昔)

イメージ
HSK3級を取った話(昔) 大学の時の第二外国語が中国語だったのと、資格を取ると中国語の単位が免除になるシステムがあったので知識を詰め込んで3級を取得しました。 その時の勉強法を思い出しながら書いていきます。 なお、この記事の攻略法が使える対象者は、 大学1年レベルの基本的な中国語の文法を学んでいる というのが条件となります。 勉強法 合格奪取! 新HSK1~4級 単語トレーニングブック (日本語) 単行本(ソフトカバー) – 2015/9/30 単語帳です。どの言語にも言えることですが単語を知らないとまず受かりません。 なのでまずは単語をとにかく頭に詰め込みましょう。 あ、4級の部分はやらなくて良いです。 単語と例文をとにかくCD使って聞いて1日1周はしましょう。単語は単純作業でとにかく繰り返すことが大事です。 3級はリスニングがあるので、読んでかければ良いわけではない点には注意してました。 リスニングも結局は特定の単語を聞き取れれば取れたりすることがあるのでとにかく音と単語を結びつけ、あわよくば例文と結びつけられれば完璧です。 中国語検定HSK公式過去問集3級 2018年度版 (日本語) 単行本(ソフトカバー) 文法とかやった方がいいと思われがちですが、そんな時間があったら過去問をとくべきだと僕は思います。 基本的な文法は大学の1年レベルで十分カバーできていますし、3級ならば過去問をやり込むだけで十分な文法対策となります。 基本的に過去問の範囲を逸脱した問題をカバーしに行くものではないですし、たかが数問取るより実際の試験の問題を解いて慣れた方が良いかと。 その分過去問はしっかり復習することが大事です。 同じような問題が結構出るので復習できていなくて過去問での正答率が上がらない限り本番も厳しいです。 あ、ちなみにリスニングは結構直前まで間違えてましたがなんやかんや実試験では取れたので諦めずに勉強を続けることが大事です。 受かるためには6割でいいとはいえ、完璧に捨ててしまうと一気にしんどくなります。 半分取れればいいやーくらいの気持ちでやればマイナス10点を読みか作文で取れば良いだけになるという分、気持ちが楽になります。 難しく考えすぎず、所詮大学二年前期修了時の二外の習得レベルって考えると苦しい時も良い精神状態にな