🐡
Scheme (Racket) で Codewars を解く (1)
#Codewars については以下の記事をご覧ください。プログラミングの問題を解くサイトです。
今回の問題は「Even or Odd」(偶数か奇数か)という問題です。
【問題原文】Create a function (or write a script in Shell) that takes an integer as an argument and returns "Even" for even numbers or "Odd" for odd numbers.
【問題訳文】一つの整数を引数としてとり、偶数には"Even"を、奇数には"Odd"を返す関数を作ってください。
JavaScriptでの解答
function even_or_odd(number) {
if ((number % 2) === 0) return "Even";
return "Odd";
}
「racket-lang even odd」で検索すると・・・
4.3.1 Number Types
・・・という(ドキュメント)ページが見つかりました。
ということで、even?
を使って次のような解答を作って見事最終テストにパスしました。
even-or-odd.rkt
#lang racket
(provide even-or-odd)
(define (even-or-odd n)
(if (even? n) "Even" "Odd"))
すこし解説すると・・・
- 「#lang ~」という行は Racket では必須で(他のSchemeでは必要ない)、ソースに書かれるプログラミング言語を指定します。通常は「#lang racket」と指定することで Scheme 言語が使えます。
- 「(provide even-or-odd)」は、下で定義される
even-or-odd
関数を、このソースを require するファイルから参照できるようにする宣言です。
以下のようにして require
して使います。"even-or-odd.rkt" 内に「(provide even-or-odd)」がないと参照エラーが出ます。
main.rkt
#lang racket
(require "even-or-odd.rkt")
(println (enven-or-odd 3))
(println (enven-or-odd 40))
zenn への投稿テストも兼ねて、小さな記事を書いてみましたw
Discussion