Сценарий эликсира не завершен - PullRequest
4 голосов
/ 30 января 2020

Я пытался реализовать FizzBuzz в эликсире. Я думаю это работает, но у меня странное поведение, и это может быть моим окружением. Я могу запустить следующий .exs файл, используя elixir fizzbuzz.exs, и при первом запуске он работает так, как вы ожидаете. Даже на втором запуске это будет работать так, как вы ожидаете. Однако, если я подожду 7 или 8 секунд и запустлю его снова, он остановится на 13 или, может быть, 14. Он может даже достичь 50. На самом деле нет ничего слишком последовательного в том, что я испытываю. Я воспроизвел его при первом запуске, я воспроизвел его после двух секунд ожидания. Я даже провел несколько минут, не имея возможности воспроизвести это вообще. Пожалуйста, помогите мне ...

IO.puts "Hello world from Elixir"

defmodule Fizzbuzz do
  def run(max) do
    run(1, max)
  end

  def run(n, max) do
    if rem(n, 3) == 0 do
      IO.puts "FIZZ"
    end

    if rem(n, 5) == 0 do
      IO.puts "BUZZ"
    end

    if rem(n, 3) != 0 && rem(n, 5) != 0 do
      IO.puts n
    end

    if n < max do
      run(n + 1, max)
    end
  end
end

Fizzbuzz.run(100)

evidence

#: Elixir -v
Erlang/OTP 21 [erts-10.2] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1]

Elixir 1.9.4 (compiled with Erlang/OTP 20)
...