投稿

ラベル(メモ)が付いた投稿を表示しています

数値の配列が与えられた時、配列の最初に偶数が現れるよう並び替える

イメージ
出典 Elements of Programming Interviews in Python: The Insiders’ Guide (English Edition) 問題 数値の入った配列が渡されます。 偶数の値が最初に現れるように配列の値を並べ替えなければしてください。 なお、追加で配列を用意してはなりません。 解法 # List[int] -> None def even_odd ( A ) : next_even , next_odd = 0 , len ( A ) - 1 while next_even < next_odd : if A [ next_even ] % 2 == 0 : next_even += 1 else : A [ next_even ] , A [ next_odd ] = A [ next_odd ] , A [ next_even ] next_odd -= 1 # Time Complexity O(N) # The additional space complexity O(1) 値が2で割り切れる時はイテレーションのインデックスを後ろにずらし、そうでない場合には入れ替え(スワップ)と後ろのインデックスを前にずらすことで比較的容易に実装が出来ます。

Pythonの二次元配列から最も大きい値を取得する

イメージ
最長部分共通問題を解いているときに 最長部分共通問題を解いているときに 気になったので調べてみた。 最長共通部分列(Common Longest Subsequence) の問題を解いている最中にこの記事を読んでいて、あれ?これだと最長の共通部分が何文字分あるのか返せてないな、でも二次元配列ってどう返すんだっけ? となったので調査。 ちなみに max(dp) や max(max(dp)) では返せませんでした。 結論としては ここ が参考になった。 大人しく従ったら上手く返せたのでメモがてら記事を書いておく。 max ( list ( map ( lambda x : max ( x ) , dp ) ) ) これで返すか、 from itertools import chain list ( chain ( * a ) ) max ( chain ( * a ) ) こう返すかの二択っぽい。 ちなみにつまづいていた最長部分共通問題は これ で、ソースコード(メモ化とDPを試した)は ここ 。 時間がある人はぜひ解いてみてください。

JavaのindexOf関数はナイーブ法で実装されているらしい

イメージ
indexOf関数とは 実際のソースを見よう ナイーブ法ってなんぞや indexOf関数とは ドキュメント はここ。 indexOf の細かい使い方は説明はしないが、簡単にいうと二つの文字列を比較して重複する箇所がある場合にその開始部分のインデックスを返すというもの。 実際のソースを見よう どのように実装されているのかが気になったので jdkの中に存在するsrc.zipを解凍して確認してみることに。 public int indexOf ( String str ) { return indexOf ( str , 0 ) ; } public int indexOf ( String str , int fromIndex ) { return indexOf ( value , 0 , value . length , str . value , 0 , str . value . length , fromIndex ) ; } static int indexOf ( char [ ] source , int sourceOffset , int sourceCount , char [ ] target , int targetOffset , int targetCount , int fromIndex ) { if ( fromIndex >= sourceCount ) { return ( targetCount == 0 ? sourceCount : - 1 ) ; } if ( fromIndex < 0 ) { fromIndex = 0 ; } if ( targetCount == 0 ) { return fromIndex ; } char

Javaでの文字列結合には気をつけよう!という話

イメージ
非効率はやめよう ということでよくあるコードとして紹介されていた内容をそのままメモ。 使えるようにしておく。 public class concat { // ループごとにStringBuilderオブジェクトを生成し、2回のappend処理を行う。非効率になる可能性高し。 static String concatTest1 ( String [ ] array ) { String result = "" ; for ( String s : array ) { result += s ; // +=演算で文字列結合 } return result ; } // 効率よし。ただしイミュータブルなStringを使わないことでバグが出やすくなるためそこの安全性を取るか効率を取るかはご自由に。 static String concatTest2 ( String [ ] array ) { StringBuilder result = new StringBuilder ( ) ; for ( String s : array ) { result . append ( s ) ; // +=演算で文字列結合 } return result . toString ( ) ; } }

Javaの ? true a:b;←これ何よと思ったので

イメージ
Javaの ? true a:b;←これ何よと思ったので Javaの ? true a:b;←これ何よと思ったので 発端はLeetCode。 Javaで書くか〜と思い、書いた後に Solution で使われていたこれ。 public ListNode addTwoNumbers ( ListNode l1 , ListNode l2 ) { ListNode dummyHead = new ListNode ( 0 ) ; ListNode p = l1 , q = l2 , curr = dummyHead ; int carry = 0 ; while ( p != null || q != null ) { int x = ( p != null ) ? p . val : 0 ; // ここ int y = ( q != null ) ? q . val : 0 ; int sum = carry + x + y ; carry = sum / 10 ; curr . next = new ListNode ( sum % 10 ) ; curr = curr . next ; if ( p != null ) p = p . next ; if ( q != null ) q = q . next ; } if ( carry > 0 ) { curr . next = new ListNode ( carry ) ; } return dummyHead . next ; } ということで調べた。 三項演算子だった。 ? true a : b ; 評価式がtrueの場合、 : の左側(この場合は a )が返る、ということで、値を返すだけならば書きやすくなる。

JavaのStringBuilderとStringBufferの違い

イメージ
StringBuilderとStringBufferの違いを言えるか 違い 備考 StringBuilderとStringBufferの違いを言えるか という話。 どっちでもいいんじゃん?というのが大多数の正直な意見かもしれないがどうせ使うならいい方を使いたい。 ということで調査、アンドメモ。 違い StringBuilderはJava5で導入された。 それ以前から使われていたのがStringBuffer。 二つの違いは排他制御があるかどうか。 Java8の StringBuilder ドキュメントでは、 文字の可変シーケンスです。このクラスは、StringBufferと互換性があるAPIを提供しますが、同期化は保証されません。このクラスは、文字列バッファが単一のスレッド(一般的なケース)により使用されていた場合のStringBufferの簡単な代替として使用されるよう設計されています。このクラスは、ほとんどの実装で高速に実行されるので、可能な場合は、StringBufferよりも優先して使用することをお薦めします。 と書いてある。 StringBufferを使用すればメソッドが呼ばれる度にStringbufferオブジェクトがロックされます。 つまり排他制御が行われるわけですが、それと同時に速度も犠牲にしている。 もっというとほとんどのケースの場合、スレッドセーフである必要がないためStringBuilderの方が速いし基本はこっちを使っておけば良い、という話。 ちなみに逆にStringBufferの方が明確に良いケースってあるんですかね。 パッと思いつかないのでどこかで考えてそれでパターン分けしていれば困ることは無くなりそう。 備考 StringBuilderの構造はこんな感じ。

Javaでの文字列処理時の典型的バグ

イメージ
文字列を処理しようという時に・・・ 文字列を後ろから抽出したい時は 文字列を処理しようという時に・・・ IndexOutOfBoundsException と StringIndexOutOfBoundsException 、これらの例外に出くわすことが多いので。 メモ程度の内容。 まあ存在しないインデックスを指定するときがほとんど。 例えば以下のコードのように。 class Main { public static void main ( String [ ] args ) { String s = "abc" ; // 以下の例はいずれもStringIndexOutOfBoundsExceptionが発生する s . charAt ( - 1 ) ; s . charAt ( 3 ) ; // 抜き出し位置が存在しないので例外が投げられる s . substring ( 1 , 3 ) ; // そもそもsubstring(開始位置,終了位置)なので対応していない s . substring ( 2 , 1 ) ; } } 文字列を後ろから抽出したい時は String型 . substring ( String型 . length - 切り出したい文字列の長さ ) ; というやり方でやっといてね!とのこと。

JavaでStringを生成する時はnew生成をやめようね!!という話。

イメージ
JavaでStringを生成する時はnew生成をやめようね!!という話。 なぜ書くのか 調査でどういう結論に至ったのか JavaでStringを生成する時はnew生成をやめようね!!という話。 String s = new String ( "0123456789" ) ; という書き方の話。 なぜ書くのか String a1 = "Hoge" ; String型を宣言するときにこういう書き方をしていたが、最初のnewする書き方と何が違うのか気になったので調べてみると違うものとして扱われてたのでメモ。 調査でどういう結論に至ったのか String s = new String ( "0123456789" ) ; という書き方は通常のオブジェクト同様にヒープ領域にインスタンスを作成する。 対して、 String a1 = "Hoge" ; String a2 = "Hoge" ; この書き方は定数として定数プールに保存される。 あえてnew Stringを使う明確な理由がない限り、Stringを変数に設定する場合は、 String str = "Hoge" ; というようにリテラルを直接指定し、 new String は使わないのがセオリーとなる。 そうすればStringオブジェクトを必要最低限で済ませることができ、メモリにもまたパフォーマンス的にもよい結果となる、らしい。 ちなみに文字列を作成した場合、JVMはまず最初に定数プールを見に行き、もし定数プールに同様の文字列が存在する場合には同じ参照を与える。 String型が不変の理由もここら辺にありそう。 それはまた別の記事で調べたいときに書きます。 今回は以上。

英語弱者が英語を話せるようになるまで Week1

イメージ
始める前に 範囲 知らなかったこととかのメモ。 テーマ:I Have Allergies 知らなかった語彙 使えそうな例文 テーマ:At the Gym 知らなかった語彙 使えそうな例文 テーマ:Weight Loss 知らなかった語彙 使えそうな例文 テーマ:Scheduling a Doctor’s Appointment 知らなかった語彙 使えそうな例文 テーマ:Health Check-Up I: Medical History 知らなかった語彙・使いたいけど使えていない語彙 使えそうな例文 Health Check-Up II: The Physical Exam 知らなかった語彙・使いたいけど使えていない語彙 使えそうな例文 始める前に 一日更新は時間がかかり過ぎてしまう(他のこともやりたい)ので、メモをまとめておいて、今回みたいに週末にまとめて出すか、それともメモレベルでいいので毎日出すのか、というのはとりあえず試してみてということで。 ひとまずこれからは週末に出します。 範囲 Health & Lifestyle Staying Healthy 04~10 知らなかったこととかのメモ。 テーマ:I Have Allergies 知らなかった語彙・使いたいけど使えていない語彙 pollen 訳:花粉 itchy 訳:痒い swell up 訳:腫れる water 訳:涙を出す、分泌液を出す。 hay fever 訳:花粉症 shellfish 訳:貝、甲殻類 sting(過去形はstung) 訳:針で刺す、刺すような痛みを与える hives 訳:蕁麻疹 例: My daughter broke out into **hives** after eating peanuts. antihistamine 訳:抗ヒスタミン剤 eye drops 訳:目薬 使えそうな例文 What are you allergic to? 訳:何にアレルギーがありますか? be allegic to~ でアレルギーがある、という聞きかたを他の例文でもしていたのでアレルギーを聞くときに使えそう。 I

英語弱者が英語を話せるようになるまで Day14テーマ:Healthy Eating

イメージ
知らなかったこととかのメモ。 テーマ:Healthy Eating 知らなかった語彙 真似したい表現 知っていたけど普段使えていない表現 知らなかったこととかのメモ。 テーマ:Healthy Eating 今回からフィットネス/健康について。 やりたいテーマだったのでモチベーションは高め。 知らなかった語彙 nutrient 訳:栄養になる物、栄養分 単体では知らなかった気がする。 nutritious とかなら知ってたけど。 We get so many **nutrients** from nuts. 意:私たちは、ナッツからとても多くの栄養分を得ます。 rich in 訳:豊富な healthily 訳:健康的な healthの副詞。 healthyは形容詞。 例文では I should probably eat more healthily. と使っていたのでそのまま覚えても良さげ。 嗜める場合は主語を変えるだけでいいし。 rich in ~ 訳:(栄養分が)豊富な~ Chicken breast is rich in protein. 意:鶏の胸肉はタンパク質が豊富だ。 真似したい表現 I eat out almost every day now 訳:ほとんど毎日外食してる これ自体は大したことない表現だけど、ほとんど毎日〇〇してるは使い所が多そう。 I hit the gym almost every day now とかだったら最近の生活スタイルでも使える。 知っていたけど普段使えていない表現 why don’t you ~ めちゃくちゃ簡単な表現なのに全然使えていない。 この機会に使うようにしたいなぁ… 今回はこんな感じ。 毎日英会話自体は続けているが他のことをやっていて記事は書けていないのが少し残念。 やった内容に関しては復習がてら書いていく予定。

ターミナルから特定のディレクトリにあるファイル内の指定文字列を一斉置換する方法

イメージ
いや、それgrepコマンドで良くない??? 単一ファイルの変換 カレントディレクトリのファイル全てを対象にする場合 いや、それgrepコマンドで良くない??? と言われること間違いなしの内容。 ただ僕自身、誰かにこれやってね!!と言われるとパッと思い浮かばなかったので自戒のためにコピペで動くように書いておく。 zsh で動作確認をしています。 今のmacOSってプリインストールされてるのzshなの知らなかった・・・ フォルダ構成はこんな感じ。 grep_test | |-----grep.txt |-----grep2.txt あ、 github にファイルを作ってコミット履歴も残していますので、気になる方はそちらも確認どうぞ。 grep.txtには this is grep test file. grep2.txtには is this grep command test????? という文字列が書かれており、共通の文字列として this , grep , test が存在しています。 単一ファイルの変換 まずは単一のファイルの中身を変えてみます。 grepコマンドで 単一 の実行しようとすると $ grep -l '置換対象の文字列' 置換対象のファイル | xargs sed -i.bak -e 's/置換対象の文字列/置換後の文字列/g' となる。 今回は grep.txt の this を that に変えてみる。 その場合、 $ grep -l 'this' grep.txt | xargs sed -i.bak -e 's/this/that/g' となり、 grep_test 内で上記のコマンドを叩くと、 that is grep test file. と変換される。 カレントディレクトリのファイル全てを対象にする場合 カレントディレクトリ内の全てのファイルを対象にして行う場合はこちら。 $ grep -l '置換対象の文字列' ./* | xargs sed -i.bak -e 's/置換対象の文字列/置換後の文字列/g' 今回は全てのファイルに存在するte

英語弱者が英語を話せるようになるまで Day13 テーマ:Conveying Your Ideas

イメージ
知らなかったこととかのメモ。 テーマ:Conveying Your Ideas 知らなかった語彙 知っていたけど普段使えていない表現 知らなかったこととかのメモ。 テーマ:Conveying Your Ideas 自分の考えを伝えるときのテーマ 知らなかった語彙 sound plan a good solid plan that is financially secure or based on valid reasoning 聞こえのいい、って感じの意味合いで sound なのかな。知らなかったし自分で使うこともなさそうだけど誰かが使った時に分かるのは大事なのでメモっておく。 知っていたけど普段使えていない表現 Furthermore/Moreover/In addition/On top of that… 意:加えて Let me offer an example. 意:一例を挙げてみましょう。 for example とか for instace とかと同じ。 Thus/Therefore… 意:したがって What I mean is… 意:私が言いたいのは There is no doubt that… 意:…は間違いありません。 It’s obvious/clear that… 意:…は明らか Regarding/concerning… 意: …に関して When it comes to… 意:になると 知ってるけど使えてないよなぁと思った表現を抜粋。 There is no doubt~ とか使いたい、超使いたい。 今回はこんな感じ。

英語弱者が英語を話せるようになるまで Day11 テーマ:Dealing with Problems

イメージ
知らなかったこととかのメモ。 テーマ:Dealing with Problems 知らなかった語彙 知っていたけど普段使えていない表現 考えたい宿題 知らなかったこととかのメモ。 テーマ:Dealing with Problems 問題に対処するときのテーマ 知らなかった語彙 On the upside… 意:良い面では 使ったことない。というか仮に見たことがあっても覚えてない。 They are facing a sales coverage problem. They/We are facing 問題の内容 problem. でかなり使いやすそうな定型表現。 知っていたけど普段使えていない表現 engage in 意:参加する take part in とか join でも代用できる。 そういえばベンチャー界隈の人たちがよく使うjoinしました!みたいなのってどこから始まったんだろう。 We need to do something about this. 意:これを何とかしないといけない。 からの What are our options? で意見を聞くのが良さそう。 そこに対する受け答えで、 The best option would be… 意:もっともいい選択肢は・・・ Another option/an alternative would be… 意:違う選択肢は・・・ の二つをセットで覚えて中身は事柄に応じて考える!みたいな感じかなぁ。 考えたい宿題 Do you often get a chance to discuss the problems that your company is facing? How do you usually decide on the solutions? という質問があってその後に What do you think is the best way to reach a decision in a group discussion? Why do you think so? という質問があった。 一つ目は簡単なのだけど、二つ目は少し手間取ってしまって簡潔に表現ができなかったので反省。

英語弱者が英語を話せるようになるまで Day10 テーマ:Graph Reports

イメージ
知らなかったこととかのメモ。 テーマ:Graph Reports 整理したい語彙 知らなかったこととかのメモ。 テーマ:Graph Reports グラフを使って報告するときについてのテーマ。 Day10を達成しました。めでたい。 整理したい語彙 値が上昇している系動詞。 increase, rise, grow, climb 値が落ちている系動詞。 fall decrease decline drop 変化が見えない系表現。 stay the same remain constant show no change 少し変化しているときの副詞。 slightly gradually slowly steadily 大幅に変化している時の副詞。 sharply suddenly significantly steeply この辺りの表現を適切に使えればグラフ関連の説明は難なくいけそう。 正直他に書くことがなかったので今回はここまで。

英語弱者が英語を話せるようになるまで Day9 テーマ:Meeting Agendas

イメージ
知らなかったこととかのメモ。 テーマ:Meeting Agendas 知らなかった語彙 知っていたけど普段使えていない表現 使いたくなった表現 知らなかったこととかのメモ。 テーマ:Meeting Agendas 会議の議題についてのテーマ。 知らなかった語彙 Have you all received a copy of the agenda? 意:アジェンダ受け取った? そもそも物理的な資料を copy of the agenda というらしい(講師談)ので、アジェンダもらった?だけなら copy of は要らないっぽい。 If you don’t mind, I’d like to skip … and move on to … 意:もしよろしければ、…を飛ばして、…に移りたいと思います。 議題を飛ばすときの表現。 If no one has anything else to add, let’s move on to … 意:誰も他に付け加えることがなければ、次に進みましょう。 とりあえず意見とか何かあるか聞くときに。 Before we begin,let’s review the minutes from the last meeting which was held on October 15th. kuehar, could you please summarize the main points of the last meeting? 意:それでは、10月15日に行われた前回の会議の議事録を確認しましょう。kueharさん、前回の会議の要点をまとめてください。 前回の会議の内容を振り返るときに。 知っていたけど普段使えていない表現 The purpose of today’s meeting is… 意:今日の会議の目的は そもそもホストとして会議を主導して目的をいうかっていうとそんな機会があまりないので使えていない。 使いたくなった表現 最近はPDF形式で書類を送ったりするよね、という話をしようとした時に「ん?~形式でってなんて言うんだ? In format of ~ とか?」と思ったのでググったら ここ に答えがあった。 I am sendin

英語弱者が英語を話せるようになるまで Day8 テーマ:Conducting a Business Meeting

イメージ
知らなかったこととかのメモ。 テーマ:Conducting a Business Meeting 知らなかった語彙 知っていたけど普段使えていない表現 使いたくなった表現 進捗を聞くときの表現 進捗を聞かれた時の表現 知らなかったこととかのメモ。 テーマ:Conducting a Business Meeting 自分がホストとして会議を開くときのテーマ。 知らなかった語彙 I’d like to welcome everyone to the meeting. 意:ようこそ会議に 意が適当かもしればないけど「みんな集まってくれてありがとう!」っていうことを伝えられればOK。 I'd like to thank you all for coming today. 、 Thank you all for attending.とかも同じように使える 質問があるかどうか聞く時に使う表現。 Any questions or comments? Does anyone have a question? Are there any further questions? 次の予定を言う時の表現。 The next meeting will be on (日付) 意:次の会議の日程は(日付) 知っていたけど普段使えていない表現 The purpose of today’s meeting is… 意:今日の会議の目的は そもそもホストとして会議を主導して目的をいうかっていうとそんな機会があまりないので使えていない。 使いたくなった表現 Immediately after 意:直後 した直後にさ〜っていう表現をしたい状況ができたのでググった。 同時にRight after、Just afterも使えそうなのでこの3つで良さげ。 progress 意:進捗 上司と話す時って進捗出てる時はいいけどそうじゃない時は緊張するよね、って話をする時にあれ?進捗って何だっけ?ってなったのでググった。 あまりすんなり出てこなかったのは単純に過程、みたいな感じで覚えていたからだと思う。 よくよく調べてみたら目標などに進んでいく様子や過程って出てきたのでまんま進捗だった。

英語弱者が英語を話せるようになるまで Day7 テーマ:Making an Announcement

イメージ
知らなかったこととかのメモ。 テーマ:Making an Announcement 知らなかった語彙 知っていたけど普段使えていない表現 考えたい宿題 知らなかったこととかのメモ。 テーマ:Making an Announcement 何かしらの発表をする時のトピック。 知らなかった語彙 We’ve just heard from upstairs that… 意味:上層部から~を聞いた 自分より上の立場の人から何かを聞いてその内容を伝えるときの表現。 講師の人に聞いたら自分の上司に限らずCEOとかもっと上の人も含まれるとか。 Drop whatever you are doing. いまいち意味を掴めなくて ここ を見たら、 drop whatever someone is doing (人)が何をしていようとそれをやめる(人)がしてることを何もかも放り出す となっていたのでとりあえずやってることをやめてね、ということなのかと思った。 知っていたけど普段使えていない表現 Listen up, everyone! 意:みんな聞いて! 社会人になってからこんな表現日本語でも使ってないな・・・ I am pleased to tell you that… pleasedのところはexictedとかdelighted、plesureとかでも代用可能。表現の幅が単調にならないように要注意、というところ。 考えたい宿題 What do you think are the best strategies for keeping employees happy and engaged? こういうYes/Noで答えを出せないタイプは最初に意見の方向性を決め、その詳細を後出しで解説する、というのがベターだと思う。 現実ではYes/Noの形よりもどのように考えているのかなどを答える機会が多いと思うので練習して慣れておきたい。 今回はこんな感じ。

ISUCONの環境をVagrantで構築しようとしたらCommand: ["hostonlyif", "create"]と出たので解決した話。

イメージ
環境:macOS Big Sur11.5.1 正確には $ vagrant up There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["hostonlyif", "create"] Stderr: 0%... Progress state: NS_ERROR_FAILURE VBoxManage: error: Failed to create the host-only adapter VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface VBoxManage: error: Context: "RTEXITCODE handleCreate(HandlerArg *)" at line 94 of file VBoxManageHostonly.cpp こんな感じ。 手順としては、 1.git cloneして、 $ git clone https://github.com/matsuu/vagrant-isucon.git 2.ディレクトリに入って $ cd vagrant-isucon/isucon6-qualifier 3.vagrant upしたら $ vagrant up 4.ERRROR! 冒頭のエラーが発生、といった感じ。 これの原因は何だろうなと思い、ググるとBig Surにアプデしたのが原因なのではないか?というような記事が散見されたので、その解決法をみてみると V

英語弱者が英語を話せるようになるまで Day6 テーマ:Interviews

イメージ
知らなかったこととかのメモ。 テーマ:Interviews 知らなかった語彙 知っていたけど普段使えていない表現 今後の人生で人生で(おそらく)使うことはないけど初めて知った表現 面接について 知らなかったこととかのメモ。 テーマ:Interviews 面接に関するトピック。 なんかやる気がでる。 知らなかった語彙 I’d like to begin by ~ 意味:~から始めたい(始めようと思う的な方が近いかも?) 面接官が面接を始めるときに「I’d like to begin by asking」という形で出てきた。 まあ面接を始める時の前置きみたいな感じだよね。 the moment I read about your program, I was genuinely interested. 意:このプログラムを読んだ時、とても興味が湧いた 別に表現自体は普通だけど強意の表現で genuinely を使うのっていいよねと思った話。 焦っている時とかは無意識の内に very とか too 祭りになっているのでここら辺の表現を連続して使うのを避けられればより自然になりそう。 知っていたけど普段使えていない表現 Let’s move on next part. 意:次のパートに進もう 前書いた次に進みましょう、という表現を言い換えるならこれ。 担当の先生がそういってたので真似るだけ何だけど、今思えば何でこれを使っていなかったんだろう・・・ 何にせよ勉強できたからよし!ということで。 今後の人生で人生で(おそらく)使うことはないけど初めて知った表現 honor student 意:特待生、優等生 はい。僕の人生でこういう時期がほとんどなかったので使うことはないと思いますが、へぇ〜と思ったので書きました。 海外だと大学のGPAはかなり重要だと聞いたことがあるし、これはよく使われるんだろうなあという話。 面接について 会話パートの内容は 挨拶 ↓ 何でこのプログラム(ポジション)に興味持ったん? ↓ この仕事をするのにどういう経験があるん? ↓ 強みと弱み教えてや ↓ このプログラム(ポジション)にどういうことを期待してるん? ↓ 終わり、合否連絡に

Pythonの基本的な組み込み型の整理①

イメージ
組み込み型を知ること Elements of Programming Interviews in Python: The Insiders’ Guide 数値関連 abs(x) math.ceil(x) math.floor(x) min(x,y) max(x,y) pow(x,y) sqrt(x) 組み込み型を知ること お仕事で書かないのでどうしても行き当たりばったりで書くことが多いのでたまには地味な基礎的なこととか書きたいなと。 何回かに分けて書きます。 Elements of Programming Interviews in Python: The Insiders’ Guide 以前 こちらの記事 でも紹介したいわゆるコーディングインタビュー対策用の本、 Elements of Programming Interviews in Python: The Insiders’ Guide 。 この本の中にChapter4にPrimitive Typesという章があったので、せっかくだし記事にしようとなりました。 公式の組み込み関数はこちら 数値関連 abs(x) 数値xの絶対値 |x|を求めるときに。 >> > abs ( - 10 ) 10 math.ceil(x) 公式のmath(数学関数)はこちら math.ceil は天井、引数として与えた x 以上の最小の整数を返します。 例えば、 >> > import math >> > math . ceil ( 2.17 ) 3 といったように、小数に関してもカバーしています。 math.floor(x) 対して math.floor です。 ceil(天井) と反対の床を意味することから、真逆の結果を返すような関数であることが想像できますよね。 返り値として x の「床」 ( x 以下の最大の整数) を返します。 >> > math . floor ( 2.17 ) 2 min(x,y) max(x,y) これらは書かなくても知ってるよ!となる気がするので軽く。 min(x,y) で x,y が数値型の場合、 x,y のいず