【问题标题】:Multiply two ranges against each other - Elixir将两个范围相乘 - Elixir
【发布时间】:2017-06-25 01:20:57
【问题描述】:

我正在尝试解决 Project Euler 中的第四个问题,但我遇到了问题。我需要将两个范围相乘,但我不确定如何用 Elixir 做到这一点。这是我正在使用的:

  def is_palindrome?(n) do
    Integer.to_string(n) == Integer.to_string(n)|> String.reverse
  end

  def multiply do
    range_1 = 100..999
    range_2 = 100..999

    for n <- range_1, n * range_2, do: n |> is_palindrome? |> Enum.max
  end

我又收到了这个错误

(ArithmeticError) bad argument in arithmetic expression

如何将两个范围相乘?

【问题讨论】:

    标签: elixir


    【解决方案1】:

    如果要将每个元素与其他元素相乘,则需要两次从列表 (&lt;-) 中获取元素。 is_palindrome? 应该用作for 中的过滤器。最后,Enum.max 应该在for 之外。

    defmodule A do
      def is_palindrome?(n) do
        Integer.to_string(n) == Integer.to_string(n)|> String.reverse
      end
    
      def multiply do
        range_1 = 100..999
        range_2 = 100..999
    
        Enum.max for n <- range_1, m <- range_2, is_palindrome?(n * m), do: n * m
      end
    end
    
    iex(1)> A.multiply
    906609
    

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      相关资源
      最近更新 更多