はじめに
アイデアはあるのになぜかコード書けないマンです。
年始からこれはまずいので、
とりあえずCodewarsで「コードを書く」という最低限だけやろうと思います。
問題
原文
This function should test if the `factor` is a factor of `base`.
Return `true` if it is a factor or `false` if it is not.
## About factors
Factors are numbers you can multiply together to get another number.
2 and 3 are factors of 6 because: `2 * 3 = 6`
- You can find a factor by dividing numbers. If the remainder is 0 then the number is a factor.
- You can use the mod operator (`%`) in most languages to check for a remainder
For example 2 is not a factor of 7 because: `7 % 2 = 1`
Note: `base` is a non-negative number, `factor` is a positive number.
Google先生
この関数は、 が`factor`の因数であるかどうかをテストする必要があります`base`。
`true`それが要因であるか`false`そうでないかを返します。
## 要因について
因数は、掛け算して別の数値を得ることができる数値です。
2 と 3 は次の理由から 6 の因数です。`2 * 3 = 6`
- 数値を割ることで因数を求めることができます。余りが 0 の場合、その数値は因数です。
- ほとんどの言語でmod 演算子 ( `%`) を使用して剰余を確認できます。
たとえば、次の理由から 2 は 7 の因数ではありません。`7 % 2 = 1`
注:`base`は負ではない数、`factor`は正の数です。
簡単な問題ですが、丁寧な問題文かつしっかり基礎に忠実でいいですね。好き
問題文で求められているのは、
「"base"と"factor"の2つの数字を用意するから、"factor"が"base"の因数かどうか調べて」
ってことですね。
(個人的には"因数"より"約数"のほうがしっくりきますが……)
今回はHaskellで書きます。サンプルコードというか、最初のコードは以下。
module CheckFactor where
checkForFactor :: Int -> Int -> Bool
checkForFactor base factor = error "don't forget your code"
解決方法
問題文にある通り
「mod
(剰余)を用いて、余りがあるか=割り切れるかどうか」
がわかれば、因数(約数)かどうかがわかりますね。
余りがない=割り切れる=true
余りがある=割り切れない=false
となればよい。
さて、Haskellの剰余はどうするんだっけな…%じゃなかった気がするな…
Q. haskellの剰余を求める式はどう書く?
A. Haskellで剰余(余り)を求める式は、mod 関数を使って書くことができます。
ですよね!
ということで
module CheckFactor where
checkForFactor :: Int -> Int -> Bool
checkForFactor base factor = base `mod` factor == 0
でAttempt。クリア!submitで完了。
終わりに
くっっっっっっそ簡単なコードを書いただけですね。最低限!有言実行!!
でも、とりあえず満足。Haskellの美しさのおかげかな。
……なんて思ってた時期が僕にもありました。
module CheckFactor where
checkForFactor :: Int -> Int -> Bool
checkForFactor = (.) (== 0) . mod
なるコードを発見。これは…どういう挙動なんだ?
GPT先生に聞けばわかるか…と思ったら!
次回、GPT、1行のコードを理解できない!!
コラム
因数と約数の違い by GPT先生
数学の「因数」と「約数」の違いを中学生にもわかるように説明します。
-
約数(やくすう):
- 約数は、ある数を割り切ることができる数のことです。
- 例えば、6の約数は1, 2, 3, 6です。これは、6を割り切ることができる数だからです。
- つまり、約数は「割り算」に関連しています。
-
因数(いんすう):
- 因数は、ある数を乗算の組み合わせで表すときの数のことです。
- 例えば、6の因数は1, 2, 3, 6ですが、これらは6 = 1 × 6 または 6 = 2 × 3 のように6を乗算の組み合わせで表すことができる数です。
- 因数は「乗算」に関連しています。
簡単に言うと、約数は「割り算」で、因数は「かけ算」で関連する数です。また、因数は式や方程式を因数分解するときに使われますが、約数は数の性質を調べるときに重要です。例えば、約数を使って素数を判断することができますが、因数は式を簡単にするために使われます。