LoginSignup
1
1

やる気が出ない人のCodewars

Last updated at Posted at 2024-01-04

はじめに

アイデアはあるのになぜかコード書けないマンです。

年始からこれはまずいので、
とりあえず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先生

数学の「因数」と「約数」の違いを中学生にもわかるように説明します。

  1. 約数(やくすう)

    • 約数は、ある数を割り切ることができる数のことです。
    • 例えば、6の約数は1, 2, 3, 6です。これは、6を割り切ることができる数だからです。
    • つまり、約数は「割り算」に関連しています。
  2. 因数(いんすう)

    • 因数は、ある数を乗算の組み合わせで表すときの数のことです。
    • 例えば、6の因数は1, 2, 3, 6ですが、これらは6 = 1 × 6 または 6 = 2 × 3 のように6を乗算の組み合わせで表すことができる数です。
    • 因数は「乗算」に関連しています。

簡単に言うと、約数は「割り算」で、因数は「かけ算」で関連する数です。また、因数は式や方程式を因数分解するときに使われますが、約数は数の性質を調べるときに重要です。例えば、約数を使って素数を判断することができますが、因数は式を簡単にするために使われます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1