Rubyインタビューコーディングの課題とその解決方法
コーディングの課題を行うことは、Rubyと問題解決のスキルを向上させるための優れた方法です。そして、コーディングインタビューの準備 !
なぜですか?
チャレンジ中は、1つの特定の問題を解決することに全力を注ぐからです。
他に何も心配する必要はありません。
この種の練習はあなたの思考スキルを拡大し、興味深い言語機能を探求することを可能にします &より優れたRuby開発者になりましょう。
これらの課題のいくつかは、数学のトリックのように、コンピューターアルゴリズム、データ構造、または概念に関する専門知識を必要とします。
これらのほとんどを解決できなくても大丈夫です。
心配しないでください!
今 :
これらの課題を解決するプロセスの感覚をつかむために、いくつかの解決策を読むことが役立つと思います。
で始まる…
課題1:重複を見つける
この最初の課題は、Integer
の配列を指定することです。 重複するすべての番号を見つけるために必要な値。
ここに例があります :
numbers = [1,2,2,3,4,5] find_duplicates(numbers) # [2]
質問から始めましょう…
「特定の番号が重複しているかどうかはどうすればわかりますか?」
私は1つのステップで解決策を得ようとはしていません。
この段階では、解決策に近づくための質問と回答をしたいと思います。
いくつかのアイデアを書き留めます :
- 配列にある各数値の数を数えることができます。その場合、count=2は重複を意味します。
- すべての要素を調べて、「表示された」要素のリストを保持できます。要素を2回表示すると、重複が見つかりました。
- 数字を文字列に結合して、複製された数字を正規表現と一致させようとすることができます。
この時点で「どちらが最適か」は関係ありません。
心配しないでください!
今のところ、重要なのは実用的なソリューションを手に入れることです。自分に合ったものを選び、そのコードを書いてください。
例 :
seen = [] numbers.each_with_object([]) do |n, dups| dups << n if seen.include?(n) seen << n end # [2]
これは正しい解決策のようです。
今 :
他の入力(異なる配列)を試して、これが実際に機能することを確認したい場合は、単体テストを作成するのが最適です。
ソリューションが100%機能している場合は、他のソリューションを試して、理解しやすいソリューションを使用できます。
完璧を求めないでください。
毎日学び、理解し、進歩することを探してください!
課題2:有効な言葉
文字の配列と1つの単語が与えられたら、その単語がこれらの文字から作成できるかどうかを調べます。
例 :
word = "orange" characters = %w(e n g a r o) valid_word?(characters, word) # true
ここでも、思考プロセスを指示するための質問から始めます。
「これらの文字で単語を作成できるようにするにはどうすればよいですか?」
アイデアを思いつく。
気を散らすものを片付けて考えてください。
これを紙で行うと役立つ場合があります 。
私のアイデア:
-
word
のすべての文字 、その文字をcharacters
から削除します 配列。すべての文字を削除できない場合は、false
を返します。 -
word
のすべての文字を数えます &characters
、次にカウントを減算します
考えられる解決策は次のとおりです :
word .each_char .all? { |ch| characters.delete_at(characters.index(ch)) rescue nil }
あなたの解決策は何ですか?
コメントセクションで共有してください。
概要
コーディングの課題と、それらを使用してRubyスキルを向上させる方法について学習しました。
覚えておいてください :
特定の課題を解決できなくてもまったく問題ありません。ビデオゲームのボスのように考えてください。ボスがレベル100で、レベル70の場合、このボスを倒すのは非常に困難です。
その場合はどうしますか?
レベルアップして、より簡単なチャレンジを体験してください (低レベルのボス)、そしてあなたはより良い装備を手に入れる (Rubyとプログラミングについてもっと学ぶ)
頑張って楽しんでください! 🙂
-
RubyでStructとOpenStructを使用する方法
Rubyの構造体とは何ですか? 構造体は組み込みのRubyクラスであり、値オブジェクトを生成する新しいクラスを作成するために使用されます。値オブジェクトは、関連する属性を一緒に格納するために使用されます。 ここに例があります : Point 2つの座標(x &y 。 このデータはさまざまな方法で表すことができます。 いいね : 配列[10, 20] ハッシュ{ x: 10, y: 10 } オブジェクトPoint.new(10, 20) 複数のPointを使用する場合 、オブジェクトアプローチを使用することをお勧めします。 しかし… これら2つの値を一緒に格納するた
-
4 つのリモート アクセスのリスクとその解決方法
在宅勤務は新たなトレンドであり、多くの人がオフィス システムやネットワークへのリモート アクセスを利用してリモートで作業することを好みます。これは非常に快適に聞こえるかもしれませんが、多数の機会が開かれますが、私たち全員が認識しなければならない特定のリモート アクセス リスクがあります。この記事は、Office ネットワークのリスクを特定し、最適なリモート アクセス セキュリティ ソリューションを特定するのに役立ちます。 4 つのリモート アクセス リスクとは? すべてのリモート アクセス ユーザーが直面する最も一般的な種類のリスクを以下に示します。 リスク #1:自宅のコンピューターを使用