輸入應爲字符串:如何在ruby中對字符串進行多重組合?
"[email protected]"
輸出應該是一個字符串數組:
["[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"]
的想法:「使在第一組部件每個可能的組合(」 ABCD「)的。點連續點是不允許沒有可在一開始,並在第一個字符串的一部分(「ABCD」)」
這結束點就是我想出迄今:
text,s = "abcd".split""
i=0
def first_dot(text)
text.insert 1,"."
end
def set_next_dot(text)
i = text.rindex(".")
text.delete_at i
text.insert(i+1,".")
end
我的做法是
- 寫一個函數,即設置第一點
- 編寫設置下一個點
- 功能...(魔術)
我不知道如何把碎片放在一起。任何想法?或者更好的方法? thanx提前
編輯: 我想我找到了解決辦法:) 我將它張貼在大約一小時(這是輝煌 - >真值表,二進制數,換位)
......和這裏的解決方案
s = "abc"
states = s.length
possibilites = 2**states
def set_space_or_dot(value)
value.gsub("0","").gsub("1",".")
end
def fill_with_leading_zeros(val, states)
if val.length < states
"0"*(states-val.length)+val
else
val
end
end
a = Array.new(possibilites,s)
a = a.map{|x| x.split ""}
b = [*0...possibilites].map{|x| x.to_s(2).to_s}
b = b.map{|x| fill_with_leading_zeros x,states}
b = b.map{|x| x.split ""}
c = []
for i in 0 ... a.size
c[i] = (set_space_or_dot (a[i].zip b[i]).join).strip
end
就問:這是一個問題,也可能用'homework'標記? ;) – pduersteler
以及你想用這個做什麼?檢查給定的電子郵件和e.m.a.i.l是否相同? –
實際上,它不是作業......但它可以給它的標籤(我很抱歉在stackoverflow上提出這個問題,我只是做了一個帳戶... ...) –