指定された値を得るために22から4を追加する正しい方法

私はこの論理パズルをインタビューで尋ねられました。

正しい方法を教えてください。これによって、22から4を加えると2が得られます。

私はインタビュアーに、その数字の根拠は何かを尋ねました。彼はそれらは小数であると言いました。私はそれについて多く考えましたが、答えを見つけることができませんでした。どんな助けもありがとう。ありがとう。

P.S。彼はまた、10月31日= 12月25日を証明するように頼んだ。しかし、この質問から、私はそれらの数の基数について尋ねました。しかし、それは疑問とは関係ありません。

30
私は聞くことに抵抗することはできません:あなたは何のためにインタビューされましたか?
追加された 著者 scunliffe,
P.S。 なぜプログラマーはハロウィーンとクリスマスを混同したのですか?
追加された 著者 AndSoYouCode,
@Derechoそれも私が期待していたものだが、彼はやらなかったし、次の質問に移った。私も最後に答えを求めたが、彼は言わなかった。おそらく、彼は他の候補者に同じ質問をするつもりでした。
追加された 著者 LawrenceC,
クレイジーな質問。仕事があなたにパズルを生成/解決することを要求しない限り、仕事を取らないでください。
追加された 著者 The Wandering Dev Manager,
@atkins、ああ神本当!雲の中で頭を...謝罪する
追加された 著者 Nathaniel Solyn,
それは口頭か書かれたか?
追加された 著者 Jawad Al Shaikh,
この質問に対する正解は「あなたがこれを必要とした現実のシナリオは何ですか?」です。
追加された 著者 Fung,
私たちはP.S.を解くことになっていますか?最初にパズルを解く方法を理解するか、最初にパズルを解いてP.S.を使用する必要があります。確認として?
追加された 著者 Mayo,
@ a-jあなたが答えを知らずに出てきたことを少し心配しています。いいインタビュアーが答えに向かってあなたを導いたでしょう。それは開いたままで移動しただけではありません。
追加された 著者 Derecho,

12 答え

数字を

24時間制

その後、

$ 22 = 10 \ text {pm} \\ 10 \ text {pm} + 4 \ text {時間} = 2 \ text {am} $

63
追加された
@mstrz数字 2242 は10進表記で表されていますが、10進表記では使用されていません。 0 から数値システムで数字を m42 同じようにhexは 0 - f (この場合は m + < code> 4 = 12 のように、
追加された 著者 Mike Minutillo,
@JeffreyKemp私たちが24時間を10進表記で表現しても、小数点の単位は1/10であり、1時間の値は1/24です(二進数の単位は1/2です。 1/8、六角単位は1/16です...)。
追加された 著者 Mike Minutillo,
時間については、基点24または基底-12はありません。そうでなければ、 A:AA (base-12)または A:M am(base-24)となりますが、それは10:22(ベース10)です。時間、分、秒はすべて小数で表されます。しかし、それらはモジュロで計算されます(24時間、60分、秒)。モジュロ!=ベース。 22 + 4時間を計算するには、$(22 + 4)\ pmod {24} = 2 $の計算が必要です。
追加された 著者 Dan,
@antipattern:モジュール式算術を使用しているという質問は、基数10ではない時間は23後にリセットされますが、あなたは10進数で表現することができます。
追加された 著者 Thorsten S.,
@JakobPampBengtssonあなたはこの大会に同意できません。しかし、22はまだ同じような時間ではありません22.344566は時間ではありません。あなたが "22"が時間として使われている場所を挙げる例があれば、私は非常に驚くでしょう。
追加された 著者 Jerry McDonald,
"22"も時間じゃない。時間は22:00になります。 04:00と表現される "4"と同じです。私はこれが正解であると考えていますが、それはひどい疑問です。
追加された 著者 Jerry McDonald,
@LaconicDroid私は、スウェーデンのここの家族や友人が使っています。私はそれがかなり普及していると思います。私たちは会話では略語を使うことができますが、 "Klockan 10"と "Klockan 22"(効果的に)を互換的に使用します。 "ヴィルケン・ティド?" "Runt 22"(When?Around 22)は、仕様を追加するために時などを使用しないことが珍しい場合であっても、困惑のためにそれを省略することに本当の問題は見当たりません。
追加された 著者 Johann Aydinbas,
@LaconicDroid私はあなたの推論に同意しない。 22日が時間じゃないのなら、22時はどうしてですか?より正確に指定するだけです。なぜ22:00:00と指定する必要はありませんか?そして、時間の概念についての議論につながる測定可能な時間の最小量に達するまで、明らかに同じ議論が続くでしょう。だから私は、22日は有効な時間であると主張します。たとえば、1月3日がそうです。今、私がこれを続けると、1月3日で、366日(うるう年ではない)を追加すると、それは何日ですか?あなたは通常、 "...と一年"を追加しません。 22 + 4時間= 2時は問題ないようです。
追加された 著者 Johann Aydinbas,
クリス・バート・ブラウンに同意する必要があります。番号22,4および2は、この問題の10進数(10進数)です。彼らがテトラビギス(base-24)だったら! 22 tv <�%2B%>%20% (50 d + 4 tv = 26 tv (54 dはどちらのベースでも2に等しくありません。 16進数のFを15として書いた場合は16進数で、15h = 21dになると言っています。もしあなたがそれが12月だと言ったら。それはOKだろう。
追加された 著者 user22698,
追加された 著者 Nathaniel Solyn,
私はこれがほぼ確実に正しい答えだと思っていますが、a、b、cがc
追加された 著者 Pankaj,
ハァッ?これらの数字が「小数点ではない」場合は、24時間内に何時間ありますか?
追加された 著者 ShadowScripter,
また、22:00 + 4時間は02:00を生成しません。それは02:00と1日を結ぶ。同じ異論が「月」の回答にも当てはまります。 「GRYで終わる単語」を参照してください: xkcd.com/169
追加された 著者 Jack Bahou,
これは正解かもしれませんが、インタビュアーは「数字は小数です」と答えて誤解しています。これは9 + 1で折り返すことを意味します。ここでは明らかにそうではありません。私が16進数を0〜15として書いても、それでも10進数にはならないでしょう。
追加された 著者 Micky and Sonic,
@antipatternに同意する必要があります。時間は小数ではありません。時間は十二分(12)か四時間(24)です。このナンセンスでは、両方を使って加算(!)をしていますが、decimal(10)を使用していません。
追加された 著者 Yiorgos Moschovitis,
一日で二十時間
追加された 著者 Yiorgos Moschovitis,

面接官が話していると思います

:4月を4月(1年で4番目の月)とみなし、22ヶ月を追加すると(4月から22ヶ月になるため)、2月(2月)!

36
追加された
したがって、面接官は、数字が小数点であると言ったときにはわずかに欺まれます。
追加された 著者 Joe Pineda,
Oct(al)31はDec(imal)25に等しい
追加された 著者 user10054,
@Menace今、別の質問として oct 31 = dec 25 を尋ねたはずです。
追加された 著者 LawrenceC,
10月と12月の数を考えると、あなたはそれを得るでしょう。
追加された 著者 LawrenceC,
私は10月31日= 12月25日のことを説明することができますが、それは私の質問とは関係ありません。
追加された 著者 LawrenceC,
@paoloいいえ、それは基数10です。数学的観点からは、これはモジュロを使用しています。ベースとはまったく関係ありません。 47 が追加されたのは、 B ではなく 11 です。同様に、 224 の両方が読み取られた場合、 4 に追加された 22 基数12の場合は 22 、基数10の場合は 22 になります。質問は次のように尋ねます:(4d + 22d)mod 12d =?
追加された 著者 Linus Lim,
これは$ 22 + 4 \ equiv 2 \ pmod {24} $と言う答えと同じですが、$ \ pmod {12} $は同じものを評価します
追加された 著者 Hercynium,
10月= 10日、12月= 12日ですので、あなたは10/31と12/25です。 10 + 31 =/12 + 25,31-10 =/= 25-12,31の基底10 = 25 =基底12(= 29)。月の日数を考えると、31 + 10 = 10と25 + 12 = 6 ...その瞬間の答えは見つかりませんでした
追加された 著者 Mayo,
@AJもしあなたができるなら、同じロジックでは動作しないように見えるので、月の代わりに月の日を考慮しても
追加された 著者 Mayo,
@VincentAdvocaatありがとう! P.S.たとえ私が10月31日= 12月25日がどのように理解できないとしても、
追加された 著者 Mayo,
@MichaSprengersああ、そうだよ、よくやった
追加された 著者 Mayo,
私はここで、私がちょうど実現したように私の陳述書を撤回し、base24の22 + 4は2ではなく12となる。それは基地についての質問ではなく、それの背後にある石積みです。
追加された 著者 Micky and Sonic,

Another more Programmatic solution

4が符号なし3ビット整数の場合、オーバーフローで22を加算すると2になります
 4 = 100
 4 + 1 = 101
 4 + 2 = 110
 4 + 3 = 111
 4 + 4 = 000
 ..  4 + 22 = 010 = 2

24
追加された
@PeregrineRookモジュロ8を使っても答えはありません。プログラミングインタビューであれば、これは最高の答えです。
追加された 著者 Guvante,
私は、この答えは全く同じではなく、<\>本質的に同等であると言いました($ \ mod 24 $を使用する2つの回答と$ \ bmod 12 $を使用する2つの回答)。一般に、これは$ b \、| \、24 $($ b $は$ 24 $の約数です)のように$ \ bmod b $で動作します($ 8 $は$ 24 $の除数なので) $ \ bmod 24 $の答えの影。インタビュアーが望んでいたものについては、言うことは不可能です。しかし、「P.S.」は、コンピュータ関連の日常的な解決策よりも、すぐに使える数学的な答えに関心があることを示唆しています。
追加された 著者 Silent-Bob,
しかしそれはあなたがモジュロ8をやっていると言っているだけの素晴らしい方法です。
追加された 著者 Silent-Bob,
困惑のスタック交換へようこそ。これは、本質的には、以前の回答のカップルと同じですが、新しい角度を提供し、よく説明されています。良いスタート!
追加された 著者 Silent-Bob,
@MarkLakata 22 + 4の結果を2ビット整数に格納するのはまったく問題ありません。それはモジュロ4に基づいた私のものと非常によく似た解決策です。私は3ビットを選択しました。それは私があなたのコメントを見るまで、私は約2ビットを考えなかったからです。あなたが必要とするビット数は重要ではありません。どのような方法でも幅を狭くして広げることができます。これは実装の詳細で、結果は同じになります。私はビットを捨てて問題を見ません、私はそれに収まらない精度を失う3(または2)ビットの変数に値を格納しています。あなたがそれを "捨てるビット"と呼んでいたいなら、あなたはできます。
追加された 著者 RIGO MORALES,
@PeregrineRookプログラミングのインタビューで質問された場合、インタビュアーが何時間も話していることを理解するために必要な質問は、彼は私の職業とは関係がなく、他の場所で働くことになる愚かな質問をするのは馬鹿だと思うだろう。整数オーバーフローや精度の低下(120 + 10 = -126などのより賢明な数値)に関する質問があれば、プログラマが知っておくべき基本的な事柄の理解を確認するうえで問題はないと思います。
追加された 著者 RIGO MORALES,
@PeregrineRookありがとう!私はこれが他の演算(モジュロ)を追加する他の答えと同じだとは思わない。この場合、実際には22から4を追加し、精度の低下のために2を得るだけです。
追加された 著者 RIGO MORALES,
なぜ3ビットで2ビットではないのですか?私はあなたが4ビットのために3ビットが必要だから3ビットを選んだと思うが、22ビットは5ビットが必要だ。ビットを捨てることに気をつけなければ、2ビットは同じ答え、すなわち4(b00)+ 22(b10 )= 2(b10)となる。
追加された 著者 Mark Lakata,

もっと数学的な可能性は、

彼はモジュラ算術について話しています。

すなわち、

$ 22 + 4 \ equiv 2 \ pmod {24} $

14
追加された
@ user1717828これは私の質問とは関係ありませんが、私はそれを説明します。 octをOctal、DecをDecimalとみなします。今では、8進数を10進数に変換する必要があります。逆も可能です。あなたは答えを得るでしょう
追加された 著者 LawrenceC,
@ sig_seg_v、あなたは10/31 = 12/25の方法を説明できますか? OPは決してしなかった。
追加された 著者 mashrab,
@ user1717828別の回答のコメントに説明されていますが、10月と12月は10月と12月の月ではなく、数字の基数(それぞれ8進数と10進数)を参照します。 Octal(基数8)の31はDecimal(基数10)で25です。
追加された 著者 user10386,
これは私の最初の考えで、特にoct 31/dec 25の質問を考えてみました。 (22 + 4 = 2 mod 8)
追加された 著者 Hercynium,
厳密に言えば、モジュラスは除算ですので、もう1つの演算を追加する場合は、24を減算して実行してください。
追加された 著者 Yiorgos Moschovitis,

私が考えることのできる1つの方法は

4の前に22を置き、2の間に小数点を置き、floor関数で整数を囲みます。
$ \ lfloor 2.24 \ rfloor $

5
追加された
$ round(2.24)$は$ 0.2 <0.5 $のためにも動作します
追加された 著者 Pocketninja,
追加は正しい単語ではないと思います。むしろ「22の前に22を置く」と言って、物事を物理的にやっていることを忘れるべきです。
追加された 著者 Linh Huynh,

可能性は

$ 22 + 4 = 26 $と$ 26 $は2桁の数字です。

しかし、そこにはより良い答えがあることを願っています。

EDIT:

もう一つの可能​​性は

面接官がそれを言ったかもしれない方法。あなたが聞いたことは、 "2つの 2つを4つに加えると2つを与える正しい方法を教えてください"。しかし、彼が意味するかもしれないことは "私に2つの 4つを与える を追加する正しい方法を教えてください。 20と4に加えられた別の数が2を与えるべきであることがわかります。したがって、$ 20 + 4 + x = 2 $です。したがって、$ x = -22 $です。したがって、20と4に-22を追加すると、2になります。

5
追加された
それは可能ですが、彼は 22を4にすると2を与えるという質問をしました。だから私は彼が2 + 4 = 6のようなものを意味したと思う
追加された 著者 LawrenceC,
"私に20を加えて4にすると2を与える正確な方法を教えてください"という声明。私には意味がありません。
追加された 著者 T Eizinger,

免責事項

シニアソフトウェアエンジニアとして、私はこれを自我的に見ています。私はそれが正しいと主張するか、私が言うことは事実です。あなたはこれをあなたが望むどんな方法でも解釈する自由意志を持っています。

前文

典型的な候補者は、利用可能なポジションのスキルが不十分です。したがって、通常、最初の数ヶ月間、彼/彼女は自分自身を開発するための作業に置かれ、会社の純損失を生成している可能性があります。この人が必要なスキルを取得するには、どれくらいの時間がかかるかを推測する必要があります。

これは単純な脳のおしゃぶりです、あなたはエントリーレベルの候補者から質問することができます。彼らは、彼らの認知的不協和音がどのようなものかを推定します。基本的なアイデアは、処理上の問題であなたが良い/優れている場合、知識ベースの不十分さを見逃す可能性があるということです。

私はこの質問をするときに何を探しますか?

  • 彼は最初の実用的な解決策を見つけた後に問題を "解決"したと考えました。
  • 彼は「追加」は異なる意味を持つことができると考えました
  • 彼は "数字"が異なるコンテキストを持つことができると考えました。

私は「処理上の問題で良い/優れている」と言いましたが、問題を解決することと同じではありません。人が失敗した場合、あなたは失敗にどのように反応したかを見たいと思っています。

前書き

ソフトウェアソリューションコストの80%は、開発が終了した後のメンテナンスから得られます。典型的なエンタープライズ・コードは、書かれたものよりも10倍多く読み取られます。総コストを削減する最善の方法は、「クリーンコード」を書くことです。

「クリーンコード」を書くことの1つの側面は、物事を正しく命名することです。言葉のあいまいさを示す最も簡単なケースの1つが「追加」です。 addにはいくつかの異なる意味があります(もっとたくさんあります):

(you add 2 values)
1 + 1 = 2
(you add a value to each list value)            
{a, b, c} + 1 = {a + 1, b + 1, c + 1} 
(you add a value to start of the list)
Prepend[{a, b, c}, 1] = {1, a, b, c}
(you add a value to end of the list)
Append[{a, b, c}, 1] = {a, b, c, 1}
(you add a value to list at specified index position starting from the beginning)
Insert[{a, b, c}, 1, i] ex: {1, a, b, c} if i = 1
(you add a value to list at specified index position starting from the end)
Insert[{a, b, c}, 1, -i] ex: {a, b, c, 1} if i = 1
(you add a set of lists)
Join[{a, b, c}, {x, y}] = {a, b, c, x, y}
(you add a set of lists without duplicates)
Union[{a, b, c}, {c, a, d}] = {a, b, c, d}

c#.netでは、リストには Add というメソッドがあり、複数の要素を追加するには単一の要素を追加し、 AddRange メソッドを追加します。単一のメソッドはあいまいな意味を持ち、きれいではありません。

32ビットアーキテクチャのコンピュータにコードを実装する場合、ビット32ビットシーケンスとその基本的な算術演算とロジックに対するハードウェアサポートがあります。 int32型の整数は32ビットで実装され、最大値2 ^ 31-1と最小値-2 ^ 31の離散数を表します。

ソリューション

c#.netのコード例

スポイラーが含まれています。

オクトー

なぜ彼の答えが投票されたのか分かりません - それは正しいです。

1 baker's dozen = 13
2 baker's dozen = 26 (22 + 4)

コード:

const int BakersDozen = 13;

値:ドメインの知識を表示

マンシュ

コード:

public static int operator +(マンシュ firstNumber, マンシュ secondNumber)
    => (firstNumber + secondNumber).ToString().Count();

値:基本データ型を知る

CodeNewbie

Following code example hides (int)(22/10 + 4/10) to be 22 + 4

コード:

public static int operator +(CodeNewbie firstNumber, CodeNewbie secondNumber) 
    => firstNumber/10 + secondNumber/10;

値:データ型/演算子を知り、関数型プログラミング

オレグ

コード:

public static int operator +(オレグ firstNumber, オレグ secondNumber) 
    => firstNumber > secondNumber ? firstNumber + secondNumber : 2;

値:デフォルトのフォールバックについて知っています

ジョブ

KoA and 私nace are just sub cases of ジョブ's general solution.

コード:

public static int operator +(ジョブ firstNumber, ジョブ secondNumber)
    => (firstNumber + secondNumber) % 24;

値:基本的な暗号化ドメインの知識を示します。

List that contains 22 and you add 4, now you have list containing 2 ele私nts.

コード:

    var items = new List { 22 };
    items.Add(4);

価値:質問を読む能力

結論

A brain teasers during a ジョブ interviews can have valid uses. From my experience it is usually just a filler to engage the applicant.

2
追加された
3年生でさえこれを行うことができます。
追加された 著者 quamrana,
@AJ私は私の答えも提供しました( 22のリストと4の追加、今は2つの要素を含むリストがあります。)。他のいくつかを列挙できますが、これは言及されていない最も簡単です。
追加された 著者 quamrana,
@wchargin 1) "モジュラ算術"。 2)あなたは引数に対して "/ 10"関数を適用できます。 3)26は何かの2であり、それが何であるかを知っているという考え。 4)私はちょうど解決策を提示できたかもしれないが、私はテーブルの反対側から私の洞察力を示すことを選んだ。奪うべきアイデアは、
追加された 著者 quamrana,
KoAやMenaceのソリューションは最高の評価を受けるかもしれませんが、Jobのソリューションは優れています。
追加された 著者 quamrana,
@wcharginはい、それは簡単な難しさの仕事であり、深い理解を示す必要はありません。あなたの前にこの問題を見たことがない腸内のレベルの候補の視点からこれを見てみてください。
追加された 著者 quamrana,
モジュロ演算子を使用すると、「基本的な暗号領域の知識」、または整数の部分が切り捨てられて「多分いくつかの関数型プログラミング」と表示されるということをどのように示していますか?一定の BakersDozen という名前は、菓子業界の「ドメイン知識」を示すものでもありません。この回答が寄与する内容は実際には分かりません。これは、ソフトウェアエンジニアリングの慣行と、他のポスターからコピーされた回答と、無意味な「価値」判断に続く批判です。一番上の方は、あなたがたぶんあなたが正しいか事実であることを「私は主張しない」ことを意味し、私は同意するつもりです。
追加された 著者 Lisa,
@Margus回答者は、モジュラ算術(例えば、totient関数とは何か、それはなぜ重要なのか、そしてそれがRSAに根本的に関係しているのかなど)、 map 任意の関数を任意のリストにマッピングすることと真剣に比較することはできません)。はい、26は何かの2つですが、この事実を認識したり、共通言語でという名前があることを認識するためのドメイン知識は必要ありません(私はパン屋ではありません。私は英語を話すので、この用語を知っている)。
追加された 著者 Lisa,
仮説を立てることを望んでいないので、文脈に欠けていて十分な情報がないという理由で、その質問に答えることを拒否します。何を得るか?
追加された 著者 user4522,
あなたはどうして地獄で私のソリューションをこのように解釈しましたか?正しい実装はpublic static Oleg演算子+(Oleg firstNumber、int secondNumber)=>新しいOleg(firstNumber.intValue + secondNumber)とthis.intValue = intValue%8を行うOleg(int intValue)コンストラクタです。整数のオーバーフロー、ナロー化、および拡大について学ぶことをお勧めします。 「シニアソフトウェアエンジニア」がそのような基本的な事柄を知っているならば、世界はより良い場所になるだろう。
追加された 著者 RIGO MORALES,

KoAの答えは私にとっては良いようですが、私は言葉の別の解釈を見ています:

4は時間帯、22は時間帯です。今回は「22から4を追加する」とは、午後2時から午後4時まで、午後2時から午前4時までに22時間追加することを意味します。これは24時間制と一致しますが、それを必要としません。

2
追加された
これは本質的に同じ考えです。
追加された 著者 Linh Huynh,
@hahornモジュロ24の算術演算は、日と時間の解釈と同じです。しかし私は、私は4を時間、22を時間単位で扱う点で異なります(KoAは逆でした)。だから、数学が時間の点でどのように解釈されるか、私の解答で言及した事実は、私の解釈が24時間制の使用に依存しないという点で違いがあります。
追加された 著者 Rosie F,

24時間標準のフォーマットで返される24時間のサイクルで時間形式で22と4を考慮する

 Adding 22 hrs (10.00 pm) with 4 hrs (4.00 am) will give 22 + 4 =26 
 Pragmatically since we do not have 26 hrs we can split it as 24 + 2 which       
 in 12 hrs format is 12.00 (Midnight) and 2.00 am thus 26 hrs relatively is   
 2.00 am in 12 hrs as well as 24 hrs format

だから正しい方法は、24時間形式の文脈で数字を追加することです。

1
追加された

軍事/ 24時間制
22:00(午後10時)+ 4時間=午前2時(午前2時)

1
追加された
困惑のスタック交換へようこそ。ここにいくつかのルールがあります。 ツアー​​に参加することをお勧めします。多分ヘルプセンターにアクセスし、続行する前に他の人の回答をお読みください。ルールの中には、(1)あなたの答えで実証したように、「スポイラー」マークアップであなたの答えを隠す、 (2)あなたの答えを掲示する前に、他のすべてを読んでください。あなたのものが他のものと同じものであれば、本当に新しいものに貢献していない限り、投稿しないでください。あなたの答えは他のいくつかと同じです。
追加された 著者 Silent-Bob,

20 を2〜4を追加すると2になります。

20 * 2 + 4 = 44

そう

44は2桁の4桁で構成されています。 "2から4を加えると2(4)が得られる"

0
追加された
あなたの答えは計算を除いてManshuと違いはありません。
追加された 著者 LawrenceC,

22 + 4 = 2×13(ベーカーズダース)

0
追加された
説明は傷つけません。
追加された 著者 LawrenceC,
この答えは、前のものと同様に、ユニットの変更に依存します。オペランドは1つのユニットにあり、結果は別のユニットにあります。計算22 + 4の単位は「パンロール」のようなもので、結果2の単位は「ベイカーダース(すなわち13)」です。 @ Guillaumeの結果は、「4の数」という単位で解釈されなければなりません。 2つのユニット、fizbobとfoobarを正確に作成して、22 + 4つのfizbob = 2つのfoobarsにすることができます。しかしそれは非常に満足のいくテクニックではありません。
追加された 著者 mihi,