回答編集履歴
3
素数のプログラムのバグ修正
    
        answer	
    CHANGED
    
    | @@ -141,18 +141,17 @@ | |
| 141 141 | 
             
            # わざと終了条件を与えず、無限長の素数列を得る例
         | 
| 142 142 | 
             
            def primes():
         | 
| 143 143 | 
             
                yield 2
         | 
| 144 | 
            -
                 | 
| 144 | 
            +
                for p in unfoldr(isPrime, 3):
         | 
| 145 | 
            -
                while True:
         | 
| 146 | 
            -
                    yield  | 
| 145 | 
            +
                    yield p
         | 
| 147 146 |  | 
| 148 147 | 
             
            def isPrime(n):
         | 
| 149 | 
            -
                ps = primes()
         | 
| 150 148 | 
             
                while True:
         | 
| 151 | 
            -
                    p  | 
| 149 | 
            +
                    for p in primes():
         | 
| 152 | 
            -
             | 
| 150 | 
            +
                        if p ** 2 > n:
         | 
| 153 | 
            -
             | 
| 151 | 
            +
                            return n, n + 2
         | 
| 154 | 
            -
             | 
| 152 | 
            +
                        elif n % p == 0:
         | 
| 155 | 
            -
             | 
| 153 | 
            +
                            n += 2
         | 
| 154 | 
            +
                            break
         | 
| 156 155 |  | 
| 157 156 |  | 
| 158 157 | 
             
            if __name__ == '__main__':
         | 
2
文章修正 + リンク修正
    
        answer	
    CHANGED
    
    | @@ -56,10 +56,10 @@ | |
| 56 56 |  | 
| 57 57 | 
             
            ```
         | 
| 58 58 |  | 
| 59 | 
            -
            ``` | 
| 59 | 
            +
            ```unfoldr```は```range```の上位互換な故、```unfoldr```の機能を制限する事で```range```が書けるわけだ。
         | 
| 60 60 |  | 
| 61 | 
            -
            ``` | 
| 62 | 
            -
            ``` | 
| 61 | 
            +
            ```unfoldr```は[Haskell](https://www.haskell.org)と言うプログラミング言語の[```unfoldr```](https://hackage.haskell.org/package/ghc-internal-9.1201.0/docs/src/GHC.Internal.Data.OldList.html#unfoldr)をPython向けに移植したモノだ。
         | 
| 62 | 
            +
            ```unfoldr```は引数を2つ取り、第一引数は関数、第二引数に「シード」と呼ばれる単一の値(データ)を取る。
         | 
| 63 63 | 
             
            ここで第一引数で取る関数のカタチが特徴的だ。ここでは[ラムダ式](https://docs.python.org/ja/3.13/tutorial/controlflow.html#lambda-expressions)を使うが、作成すべき関数は次のルールに従う。
         | 
| 64 64 |  | 
| 65 65 | 
             
            ```Python
         | 
1
文章修正
    
        answer	
    CHANGED
    
    | @@ -32,7 +32,7 @@ | |
| 32 32 |  | 
| 33 33 | 
             
            ```
         | 
| 34 34 |  | 
| 35 | 
            -
            ここで作成したイテレータ```unfoldr```は、Python組み込みのイテレータ[```range```](https://docs.python.org/ja/3.13/library/functions.html#func-range)の亜種だ。
         | 
| 35 | 
            +
            ここで作成した[イテレータ](https://docs.python.org/ja/3.13/tutorial/classes.html#iterators)```unfoldr```は、Python組み込みのイテレータ[```range```](https://docs.python.org/ja/3.13/library/functions.html#func-range)の亜種だ。
         | 
| 36 36 | 
             
            と言うより、[```range```](https://docs.python.org/ja/3.13/library/functions.html#func-range)の上位互換だ。
         | 
| 37 37 |  | 
| 38 38 | 
             
            ```Python
         | 
| @@ -42,7 +42,7 @@ | |
| 42 42 | 
             
            [0, 1, 2]
         | 
| 43 43 |  | 
| 44 44 | 
             
            ```
         | 
| 45 | 
            -
            従って、単純には、```range```は``` | 
| 45 | 
            +
            従って、単純には、```range```は```unfoldr```を利用すると次のように書ける。
         | 
| 46 46 |  | 
| 47 47 | 
             
            ```Python
         | 
| 48 48 | 
             
            def range(*args):
         | 
