哪种语言理解'变量a = 0,20,...,300'?

Rel*_*lla 11 arrays variables programming-languages list lazy-evaluation

哪种语言很聪明才能理解variable a = 0 , 20, ..., 300?所以你可以很容易地创建数组,它给出了步骤开始var last var(或者,更好的没有最后一个变量(一个无限数组)),而不仅仅是数字(甚至复杂的数字和自定义结构,如Sedenion,你可能会定义在你的拥有一个班级或其他......)

重点是,找到一种可用于某种语言的语言或算法,这种语言可以解释你给出的变量数组(或变量的参数)如何变化的规律.并使用该法则构成一个结构,您可以从中获得任何变量.

对于每个人 - 您提供的示例对所有初学者都非常有帮助.同时也是构建这种"智能阵列"课程所需的基本知识.所以,非常感谢您的热心帮助.

正如杰夫萨尔注意到的那样

所有可能的规则可能包括一些需要评估一些/所有现有成员以生成第n个成员的规则.

所以这是一个很难的问题.而且我认为那种"天生"的语言很适合玩耍,希望不仅适用于数学家.

Joh*_*iss 35

哈斯克尔:

Prelude> let a=[0,20..300]
Prelude> a
[0,20,40,60,80,100,120,140,160,180,200,220,240,260,280,300]
Run Code Online (Sandbox Code Playgroud)

顺便说一句:无限列表也是可能的:

Prelude> let a=[0,20..]
Prelude> take 20 a
[0,20,40,60,80,100,120,140,160,180,200,220,240,260,280,300,320,340,360,380]
Run Code Online (Sandbox Code Playgroud)

  • @Stephan:你不能在Haskell中重新绑定变量或改变数据结构. (6认同)
  • 也许Ole意味着定制结构? (2认同)

sho*_*osh 20

Excel中:

  • 在A1中写入0
  • 在A2写20
  • 选择A1:2
  • 向下拖动角落


Str*_*ger 10

F#:

> let a = [|0..20..300|];;

val a : int [] =
  [|0; 20; 40; 60; 80; 100; 120; 140; 160; 180; 200; 220; 240; 260; 280; 300|]
Run Code Online (Sandbox Code Playgroud)

复杂的数字:

let c1   = Complex.Create( 0.0, 0.0)
let c2   = Complex.Create(10.0, 10.0)
let a    = [|c1..c2|]

val a : Complex [] =
 [|0r+0i; 1r+0i; 2r+0i; 3r+0i; 4r+0i; 5r+0i; 6r+0i; 7r+0i; 8r+0i; 9r+0i; 10r+0i|]
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它只增加了实部.

如果步骤也是一个复数,它将增加实部和虚部,直到last var达到实部:

let step = Complex.Create(2.0, 1.0)
let a    = [|c1..step..c2|]

val a: Complex [] =
  [|0r+0i; 2r+1i; 4r+2i; 6r+3i; 8r+4i; 10r+5i|]
Run Code Online (Sandbox Code Playgroud)

请注意,如果此行为与您的需求不匹配,您仍然可以重载(..)(.. ..)运算符.例如,你想要它增加虚部而不是实部:

let (..) (c1:Complex) (c2:Complex) =
  seq {
    for i in 0..int(c2.i-c1.i) do
      yield Complex.Create(c1.r, c1.i + float i)
  }

let a    = [|c1..c2|]
val a : Complex [] =
 [|0r+0i; 0r+1i; 0r+2i; 0r+3i; 0r+4i; 0r+5i; 0r+6i; 0r+7i; 0r+8i; 0r+9i; 0r+10i|]
Run Code Online (Sandbox Code Playgroud)


Dom*_*mra 5

等待...

蟒蛇:

print range(0, 320, 20)
Run Code Online (Sandbox Code Playgroud)

[0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300]

评论的道具(我知道有一个更简洁的方式:P)


kam*_*eto 5

和PHP:

$a = range(1,300,20);
Run Code Online (Sandbox Code Playgroud)

  • PHP看起来不错?没想到我会看到这一天. (3认同)