{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Ruby" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## FizzBuzz" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 仕様\n", "+ 3で割り切れる場合は「Fizz」を出力する。\n", "+ 5で割り切れる場合は「Buzz」を出力する。\n", "+ 両者で割り切れる場合は「FizzBuzz」を出力する。\n", "+ 上記以外の場合は数値を返す。\n", "+ 指定された回数だけ繰り返し実行する。\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 設計\n", "#### Todo\n", "+ ~~Fizzを出力できるようにする~~\n", "+ ~~Buzzを出力できるようにする~~\n", "+ ~~FizzBuzzを出力できるようにする~~\n", "+ ~~繰り返し実行できるようにする~~\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 開発" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 1)", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m class FizzBuzz\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ], "output_type": "error" } ], "source": [ "class FizzBuzz\n", " def self.generate(number)\n", " value = number\n", "\n", " if (value % 3 == 0) && (value % 5 == 0)\n", " value = 'FizzBuzz'\n", " elsif value % 3 == 0\n", " value = 'Fizz'\n", " elsif value % 5 == 0\n", " value = 'Buzz'\n", " end\n", "\n", " value\n", " end\n", "\n", " def self.iterate(count)\n", " array = []\n", " count.times do |n|\n", " n += 1\n", " array.push(FizzBuzz.generate(n))\n", " end\n", " array\n", " end\n", "end\n", "\n", "require 'minitest/autorun'\n", "class FizzBuzzSpec < Minitest::Spec\n", " describe FizzBuzz do\n", " it '3ならばFizzを返す' do\n", " expect(FizzBuzz.generate(3)).must_equal 'Fizz'\n", " end\n", "\n", " it '9ならばFizzを返す' do\n", " expect(FizzBuzz.generate(9)).must_equal 'Fizz'\n", " end\n", "\n", " it '5ならばBuzzを返す' do\n", " expect(FizzBuzz.generate(5)).must_equal 'Buzz'\n", " end\n", "\n", " it '10ならばBuzzを返す' do\n", " expect(FizzBuzz.generate(10)).must_equal 'Buzz'\n", " end\n", "\n", " it '50ならばBuzzを返す' do\n", " expect(FizzBuzz.generate(50)).must_equal 'Buzz'\n", " end\n", "\n", " it '15ならばFizzBuzzを返す' do\n", " expect(FizzBuzz.generate(15)).must_equal 'FizzBuzz'\n", " end\n", "\n", " it '30ならばFizzBuzzを返す' do\n", " expect(FizzBuzz.generate(30)).must_equal 'FizzBuzz'\n", " end\n", "\n", " it '5回実行されたならば配列を返す' do\n", " expect(FizzBuzz.iterate(5)).must_equal [1, 2, 'Fizz', 4, 'Buzz']\n", " end\n", "\n", " it '10回実行されたならば配列を返す' do\n", " expect(FizzBuzz.iterate(10)).must_equal [1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz']\n", " end\n", " end\n", "end\n" ] } ], "metadata": { "kernelspec": { "display_name": "Ruby 2.4.4", "language": "ruby", "name": "ruby" }, "language_info": { "file_extension": ".rb", "mimetype": "application/x-ruby", "name": "ruby", "version": "2.4.4" } }, "nbformat": 4, "nbformat_minor": 1 }