2016-01-13 74 views
-3

我試圖代碼,我已經信數組的東西,我想系統打印斯威夫特密碼破解

一個

b

Ç

d

...(不是印刷的一部分,只是爲了縮短顯示內容)

AA

AB

交流

交流

...

gooe(在該行的信件沒有空格,我這樣做是因爲堆棧溢出認識到這是不好的語法)

goof

我目前正在迅速做到這一點。 (我是從數組中拉出字母),所以簡而言之,這就好比一個系統蠻力如何破解密碼

回答

2

遍歷這樣的單詞很像增加一個基數26.您可以利用String(.., radix:)初始化實現這一目標:

extension Character { 
    var unicodeScalarsValue: UInt32 { 
     return String(self).unicodeScalars.first!.value 
    } 
} 

func printWordSequence(numWords: Int) { 
    for i in 0..<numWords { 
     print(String(i, radix: 26).characters.map({ 
      char -> String in 
      let a = char.unicodeScalarsValue 
      if a < 58 { 
       return String(UnicodeScalar(a + 49)) 
      } 
      else { 
       return String(UnicodeScalar(a + 10)) 
      } 
     }).joinWithSeparator("")) 
    } 
} 

printWordSequence(3000) 

/* 
a 
b 
c 

... 

elh 
eli 
elj */ 

Character擴展是從獅子座Dabus答案採取線程「What's the simplest way to convert from a single character String to an ASCII value in Swift?」。


如果你寧願要保存在陣列的話(供稍後打印或使用),修改功能略高於爲:

func generateWordSequence(numWords: Int) -> [String] { 
    var myArr : [String] = [] 
    for i in 0..<numWords { 
     myArr.append(String(i, radix: 26).characters.map({ 
      char -> String in 
      let a = char.unicodeScalarsValue 
      if a < 58 { 
       return String(UnicodeScalar(a + 49)) 
      } 
      else { 
       return String(UnicodeScalar(a + 10)) 
      } 
     }).joinWithSeparator("")) 
    } 
    return myArr 
} 

var myWordSequence = generateWordSequence(3000) 
myWordSequence.map { print($0) } 
/* same as above ... */