-2

私は、rubyを使用してプロジェクトオイラーの問題#45を解決しようとしています。私はアプローチを知っています。しかし、私はコードを書きました、それは実行されません。私はルビーに不慣れです、なぜ後ろにそんなに多くの「end」キーワードがなければならないのか分かりません(さもなければターミナルは文句を言うでしょう)

コードは次のとおりです。

class Test
    def initialize()

    end

    def Triangle(n)
        if 1 + 8*n < 0 then
            return false
        else
            i1 = 0.5 * (-1 + Math.sqrt(1 + 8*n))
            i2 = 0.5 * (-1 - Math.sqrt(1 + 8*n))
            cut_i1 = i1.to_i
            cut_i2 = i2.to_i
            if (cut_i1 == i1) & (i1 > 0)
                return true
            else if (cut_i2 == i1) & (i2 > 0)
                return true
            else
                return false
            end
        end
    end

    def Pentagonal(n)
        delta = 1 + 24*n
        if delta < 0 then
            return false
        else
            r1 = (1.0/6) * (1 + Math.sqrt(delta))
            r2 = (1.0/6) * (1 - Math.sqrt(delta))
            cut_r1 = r1.to_i
            cut_r2 = r2.to_i
            if (cut_r1 == r1) & (r1 > 0)
                return true
            else if (cut_r2 == r1) & (r2 > 0)
                return true
            else
                return false
            end
        end
    end 

    def Hexagonal(n)
        delta = 1 + 8*n
        if delta < 0 then
            return false
        else
            r1 = 0.25 * (1 + Math.sqrt(delta))
            r2 = 0.25 * (1 - Math.sqrt(delta))
            cut_r1 = r1.to_i
            cut_r2 = r2.to_i
            if (cut_r1 == r1) & (r1 > 0)
                return true
            else if (cut_r2 == r1) & (r2 > 0)
                return true
            else
                return false
            end
        end
    end
end
for i in (1...100)
    o = Test.new
    print o.Triangle(i)
end

end
end
end

何が起こっていますか。ターミナルからプログラムを実行するたびに。何も表示されません。

4

1 に答える 1

6

else ifの代わりに使用しているためですelsif。比較:

if cond
  # do something
elsif another_cond
  # do something else
end


if cond
  # do something
else
  if another_cond
    # do something else
  end
end

それを念頭に置いて、あなたのプログラムはあなたがすべきだと思っていることをしません。を修正してelsif見てください。

于 2013-01-31T07:21:20.713 に答える