为什么我不能在数组中放入我需要的所有字符?
问题描述:
我做了一个程序,我需要把所有可能的字符放在一个数组中。 在这里,我创造我的变量只是读名称为什么我不能在数组中放入我需要的所有字符?
print "write your name: "
name1 = gets.chomp
然后我试图把所有的字符数组内,例如,如果你的名字是约翰,数组是:J-,乔,荷兰Joh,约翰
arrayNames = []
number = name1.length
number.times {|i|
arrayNames[i] = name1.slice(0,i)
}
arrayNames << name1
然后读它,我想使置换计划,我写:
numb = name1.length+ 1
numb2 = anotherVariable.length + 1
numb.times {|j|
numb2.times {|k|
perm = [arrayNames[j],theSecondArray[k]]
p perm
file1.puts
}
}
当然
我有文件1发,我已经第二阵列塔完全相同的代码在arrayNames
但没有工作。它甚至不显示错误。生病把所有的代码放在一起下面
class Data
def initialize
end
def dataIn
print "write your name: "
$name = gets.chomp
print "write your surname: "
$surname = gets.chomp
end
def dataName
$passwordName = []
numb = $name.length
numb.times {|i|
$passwordName[i] = $name.slice(0,i)
$passwordName << $name
end
def dataSurn
$passwordSur = []
numb = $surname.length
numb.times {|i|
$passwordSur[i] = $surname.slice(0,i)
}
$passwordSur << $surname
end
def alg1
numb = $name.length + 1
numb2 = $surname.length + 1
numb.times {|i|
numb2.times {|j|
perm = [$passwordName[i], $passwordSur[j]].permutation.map {|k|
k.join}
p perm
$archivos.puts perm
}
}
end
end
代码本身有点复杂一点,但我的问题是一样的。该方法ALG1犯规work.then我只是给他们打电话,创建文件
data = Data.new()
datos.dataIn
$archivos = File.new("passwords",'w+')
File.open("passwords")
data.datosName
data.datosSurn
data.alg1
gets()
答
我不知道正是你正在尝试做的,但Ruby的内置Array方法会让你的生活变得更轻松:
>> name1 = 'John'
=> "John"
>> names = (0...name1.length).map { |i| name1[0..i] }
=> ["J", "Jo", "Joh", "John"]
>> other = ['dog', 'wolf', 'sheep']
=> ["dog", "wolf", "sheep"]
>> result = names.product(other)
=> [["J", "dog"],
["J", "wolf"],
["J", "sheep"],
["Jo", "dog"],
["Jo", "wolf"],
["Jo", "sheep"],
["Joh", "dog"],
["Joh", "wolf"],
["Joh", "sheep"],
["John", "dog"],
["John", "wolf"],
["John", "sheep"]]
+0
完美的工作,我的代码 – marcos
您是否在ruby shell中逐行运行命令?你认为在这个过程中arrayNames(或麻木)的价值是什么?此外,slice(0,i)的值的术语是'前缀' –
是的,我做过。切片(0,i)工作时,我把它放在一边,数组名称显示我说过,约翰 – marcos
的例子是最后一部分是什么不工作,第三个 – marcos