Skip to content

Instantly share code, notes, and snippets.

@cedricbahirwe
Last active November 15, 2022 18:39
Show Gist options
  • Save cedricbahirwe/a6d25758509c52d3221a3f03f0662855 to your computer and use it in GitHub Desktop.
Save cedricbahirwe/a6d25758509c52d3221a3f03f0662855 to your computer and use it in GitHub Desktop.
Algorithm to extract the Ethnies/Tribus/Territoire of DRC from a literal String
import Foundation
//VOICI LA LISTE DES ETHNIES ET TRIBUS PAR TERRITOIRE DE LA RDC, UN ARTICLE RETROUVÉ AU MUSEE DE TERVUREN EN BELGIQUE (LES BANYAMULENGE, 𝑫𝑬𝑺 𝑹𝑾𝑨𝑵𝑫𝑨𝑰𝑺, N'Y FIGURENT PAS )*
//
//Recherchez aussi la vôtre...
//Ethnies/Tribus/Territoire*
//Patrice Emery Lumumba avait prédit : « l’histoire du Congo sera écrite par les congolais eux-mêmes ».
//Bravo à nos historiens et chefs coutumiers qui devraient vulgariser ce texte afin de sortir notre progéniture de l'ignorance.
//Le Chercheur !!!!
// Check output at: https://gist.github.com/cedricbahirwe/13cbeee55ff10dfc39f56940aa8b82ea
// Model
struct Content: Codable {
let key: Int
let ethnie: String
let tribues: [String]
}
// Literal String
let data =
"""
1. Abandiya - Aketi,Bondo, Buta
2. Abarambo - Poko
3. Aka (pygmées) - Dungu
4. Alur - Mahagi
5. Amadi - Poko, Nyangara
6. Amba - Beni
7. Angba - Banaliya
8. Apagibeti - Bumba, Businga, Yakoma
9.. Aushi- Kipushi, Sakania
10. Avungara - Dungu, Nyangara
11. Beanga - Bolomba
12. Bale - Cfr Lendu
13. Bali - Bafuasende
14. Bali-ndua- Lisala
15. Balobo - Bomongo
16. Banda - Bosobolo, Libenge
17. Bangba - Nyangara, Watsa
18. Bango - Basoko
19. Bangubangu - Kabalo, Kabambare, Kasongo, Kongolo, Nyunzu
20. Banya Bwisha - Rutshuru
21. Bari - Watsa
22. Bemba - Kasenga, Pueto
23. Bembe - Fizi, Mwenga
24. Benja - Basoko
25. Binja - Aketi, Kasongo
26. Binja sud - Kasongo, Pangi, Punya
27. Binji - Demba, Dimbelenge, Lusambo
28. Binza - Aketi, Bambesa, Banalia, Bondo, Buta
29. Bira - Irumu, Mambasa
30. Boa - Aketi, Bambesa, Banalia, Bondo, Buta
31. Bobai - Oshwe
32. Bobangi - Bomongo
33. Bofonge - Djolu
34. Boguru - Yakoma
35. Bokala - Oshwe
36. Bokongo - Oshwe
37. Bokote (Nord)- Bansakusu, Bikoro, Bolomba, Ingende, Mokoto
38. Bolia - Inongo
39. Boloki - Bomongo
40. Boma - Bagata, Mushi
41. Bonjo - Bomongo
42. Boonde - Bongandanga, Djolu
43. Boro - Banaliya
44. Bosaka - Befale, Bokungu
45. Boyela - Ikela, Lomela
46. Boyo - Fizi, Kabalo, Kabambare, Manono, Nyunzu
47. Budu - Mombasa, Wamba, Watsa
48. Bwari - Fizi
49. Bwende - Luozi
50. Bwile - Moba, Pweto
51. Ciokwe - Dilolo, Feshi, Ilebo, Kehema, Kansongolunda, Popokabaka, Sandoa, Tshikapa
52. Dikidiki - Kimvula, Madimba, Popokabaka
53. Dinga - Tshikapa
54. Doko - Budjala, Lisala
55. Dongo - Faradje
56. Dza - (Badia) Kutu
57. Dzing - Idiofa
58. Efe (Pygmées) - Irumu, Mambasa, Watsa
59. Ekonda - Bikoro, Ingende, Inongo, Kiri
60. Ekota - Boende
61. Eleku - Bomongo, Makanza
62. Ewaku - Bomongo
63. Fulero - Uvira
64. Fulru - Bosobolo
65. Gbanziri - Bosobolo
66. Gboma - Yakoma
67. Gbuta - Aketi
68. Hamba - Lodja, Lomela
69. Hanga - Basoko, Isangi
70. Havu - Kalehe
71. Hema - Beni, Djugu, Irumu
72. Hemba - Kabambare, Kasongo, Kongolo, Malembankulu, Manono, Nyunzu
73. Holo - Kasongo Lunda
74. Humbu - Bagata, Kansangulu, Kenge, Kinshasa
75. Hunde - Masisi, Rutsuru
76. Hungaan - Bagata, Bulungu, Kenge, Masimanimba
77. Ikongo - Bokungu
78. Imoma-Mpongo- Monkoto
79. Ionga (Djonga) - Lomela
80. Ipanga - Oshwe
81. Iyembe - Inongo
82. Jaba - Kungu
83. Jamba (Djamba)- Bomongo
84. Kakongo - Boma, Lukula
85. Kakwa - Aru, Fardje
86. Kalanga - Nyunzu
87. Kalundwe - Kamina, kaniama
88. Kango - Aketi, Buta, Nyangara
89. Kanyok - Mweneditu
90. Kaonde - Kambove, Lubudi, Mutshatsha
91. Keliko -
92. Aru Kete - Libalya, Kamiji, Luebo, Luiza, Mweneditu, Mweka, Tshikapa
93. Kuba - Ilebo, Luebo, Mweka
94. Kula - Makanza
95. Kumu - Bafuasende, Lubutu, Pangi, Ubundi, Walikali
96. Kunda - Kabalo, Kasenga, Kongolo, Malembankulu, Manono, Moba, Nyunzu, Pweto
97. Kusu - Kasongo, Kibombo, Kongolo
98. Kutu - Boende, Goma, Rutshuru
99. Kwese - Gungu
100. Lala - Sakania
101. Lamba - Kambove, Kasenga, Kipushi, Sakanya
102. Langa - Kindu
103. Leele - Idiofa, Ilebo, Luozi
104. Lega - Mwenga, Pangi, Punia, Shabunda, Walikale
105. Lemba - Kambove
106. Lembwe - Kasenga
107. Lendu (Bale)- Djugu, Irumu, Mahagi
108. Lengola- Kindu, Ubundu
109. Lese - Irumu, Mambasa, Watsa
110. Libinza - Bomongo, Makanza
111. Lika - Wamba
112. Likila - Bomongo
113. Lionje - Boende
114. Lobala - Bomongo, Kungu
115. Lobo - Makanza
116. Logo - Faradje
117. Loi - Bomongo
118. Lokele - Isangi
119. Lokole - Bokungu, Yahuma
120. Lombi - Bafuasende
121. Lomotwa - Mitwaba
122. Luba Kas - Bemba, Dibaya, Ilebo, Kabeya-Kamwanga, Kamiji; Katanda, kazumba, Luebo, Lupatapata, Lusambo, Miabi, Mueneditu, Mweka, Ngandajika, Tshikapa, Tshilenge
123. Luba Kat - Bukama, Kabalo, Kabambare, Kabinda, Kabongo, Kamina, Lubudi, Malembankulu, Mutshatsha, Sandoa
124. Lugbare - Aru
125. Lula - Limvula, Madimba, Popokabaka
126. Lulua - Demba, Dibaya, Kazumba, Luebo, Tshikapa
127. Lumbu - Kabalo, Kalemi, Kongolo, Manono, Nyunzu
128. Lunda - Dilolo, Gungu, Kahemba, Kapanga, Lubudi, Mweneditu, Mutshatsha, Sandoa, Tshikapa
129. Luntu (Bakwa)- Demba, Dimbelenge
130. Lusankanyi - Lukolela
131. Lusengo - Makanza
132. Lwalwa - Kazumba, Luiza, Tshikapa
133. Lwena - Dilolo
134. Lwer - Idiofa
135. Mabembe - Makanza
136. Mabendi - Djugu
137. Madi - Aru
138. Makanza - Makanza
139. Makere - Bambesa
140. Malele - Poko
141. Mampoko - Bomongo, Makanza
142. Mamvu - Dungu, Watsa
143. Mangbetu - Niangara, Rungu, Wamba
144. Mangutu - Watsa
145. Manianga - Luozi, Mbanzangungu
146. Mate - Luberu
147. *Mayogo - Niangara, Rungu*
148. Mba - Banaliya
149. Mbagani - Kazumba
150. Mbai - Luiza
151. Mbala - Bagata, Bulungu, Fetshi, Gungu, Kazumba
152. Mbanja - Bosobolo, Budjala, Businga, Kunga, Libenge
153. Mbata - Madimba, Mbanzangungu
154. Mbeko - Madimba, Mbanzangungu
155. Mbelo (Ekonda) - Oshwe
156. Mbesa - Basoko, Yahuma
157. Mbikiankamba - Oshwe
158. Mbinsa - Kasangulu
159. Mbo - Mambasa
160. Mbole - Boende, Isangi, Mokoto, Opala
161. Mboli - Kungu
162. Mboma - Songololo
163. Mbuja - Bumban Lisala
164. Mbuli - Katakokombe
165. Mbuti (pygmies)- Aru, Djugu, Idiofa
166. Mbunda - Bulungu, Gungu, Idiofa
167. Medje - Rungu
168. Metoko - Ubundu
169. Mfunu - Mushie
170. Minungu - Kahemba, Kasongolunda, Sandoa
171. Mondumba - Bumba
172. Mondjombo - Libenge
173. Motembo - Budjala, Lisala
174. Mpama - Lukolela
175. Mpangu - Kasangulu, Kinvula, Madimba, Mbanzangungu
176. Mpe -Inongo
177. Mpoko - Bomongo
178. Mputu - Lusambo
179. Mundu - Faradje
180. Mvuba - Beni
181. Nande - Beni, Lubero
182. Ndaka - Mambasa
183. Ndembo - Dilolo, Kamina, Lubudi, Mutshatsha
184. Ndengese - Dekese
185. Ndibu - Kasangulu, Mbanzangungu, Songololo
186. Ndo Okebo - Aru
187. Ndo Vare - Aru
188. Ndobo - Bomongo, Makanza
189. Ndunga - Lisala
190. Ngando - Bokungu, Djolu, Ikela, Yahuma
191. Ngbaka - Businga, Gemena, Kungu, Libenge
192. Ngbandi - Bondo, Budjala, Businga, Gemena, Kungu, Mobayimbongo, Yakoma
193. Ngele - Bomongo
194. Ndengele - Kindu
195. Ngenja - Lisala
196. Ngiri - Kungu
197. Ngoma (Bena)- Kasenga
198. Ngombe - Basankusu, Bolomba, Bongandanga, Bosobolo, Budjala, Kungu, Lisala
199. Ngongo - Bagata, Bulungu, Kenge, Masimanimba
200. Ngul - Idiofa
201. Nkanu - Kimvula, Madimba, Popokabaka
202. Nkole - Kiri
203. Nkundo - Bansakusu, Bikoro, Bolomba, Ingende, Mokoto
204. Nkutshu - Nkole
205. Nsongo - Befale
206. Ntandu - Kasangulu, Madimba
207. Ntomba - Befale, Bikoro, Bongandanganda, Inongo
208. Nunu - Lukolela
209. Nwenshi - Mitwaba
210. Nyanga - Walikale
211. Nyari - Djugu, Mahagi
212. Nyintu - Mwenga
213. Nzakara - Bondo
214. Okebo (Ndo) - Djugu, Mahagi
215. Olombo (Turungu)- Basoko, Isangi
216. Ombo - Kindu
217. Ooli - Kole, Oshwe
218. Pajulu - Faradje
219. Pende - Feshi, Gungu, Idiofa, Kahemba, Tshikapa
220. Père - Lubero
221. Pindi - Bulungu
222. Popoji - Bambesa, Banalia
223. Poto - Basoko, Bumba, Lisala, Makanza 224. Rega- Kamituga, Shabunda-Mwenga, etc.
225. Rundi - Uvira
226. Sakata - Kutu
227. Salampasu - Luiza
228. Sanga - Kambove, Lubudi
229. Sengo - Makanza
230. Seba - Kipushi
231. Sengele - Inongo
232. Shi - Kabare, Kalehe, Mwenga, Walungu
233. Shila - Pweto
234. Shunji - Kahemba, Kasongolunda
235. Shoowa - Mweka
236. Shu- Beni
237. So (Basoko) - Basoko, Isangi
238. Solongo - Boma, Lukula
239. Songola - Kindo
240. Songomeno - Mokoto
241. Songye - Demba, Kabalo, Kabinda, kabongo, Kasongo, Kongolo, Lodja, Lubao, Lubefu, Lusambo, Ngandajika
242. Soonde - Fashi, Kahemba
243. Sua (Pygmées) - Itumu, Mambasa
244. Suku - Bulungu, Feshi, Luozi, Mbanza-ngungu, Tshela
245. Sundi - Kasangulu, Lukusa, Luozi, Mbanzangungu, Tshela
246. Swaga - Lubero
247. Tabua - Moba
248. Tanda - Bomongo, Kungu
249. Tangi - Beni, Lubero
250. Teke - Bolobo, Kasangulu, Mushie
251. Tere (Sakata) - Kutu
252. Tetela - Demba, Katakokombe, Kole, Lodja, Lomela, Lubao, Lubefu, Lusambu
253. Tiene - Bolobo
254. Titu - Oshwe
255. Topoke - Isangi
256. Tow - Kutu
257. Tsamba - Bulungu, Feshi, Kasongolunda, Kenge, Masimanimba, Popokabaka
258. Tsong - Bulungu, Masimanimba
259. Tumbwe - Kalemi, Manono, Moba
260. Tungu - Banaliya
261. Vira - Uvira
262. Vungana - Lukula, Sekebanza
263. Wagenya - Kasongo, Katakokombe, Kindu, Kongolo, Mambesa, Ubundu
264. Watambulu - Katakokombe
265. Wenze - Budjala, Lisala
266. Wongo - Gungu, Ilebo
267. Woyo - Boma
268. Yaka - Kasongolunda, Kenge, Popokabaka
269. Yansi - Bagata, Bulungu, Kenge, Masimanimba
270. Yeke - Kasenga, Lubudi, Pweto
271. Yew - Bambesa, Buta
272. Yira (Nande) - Beni, Lubero
273. Yombe - Boma, Lukula, Sekebanza, Tshela
274. Zande - Ango, Bambesa, Poko
275. Zela - Mitwaba, Pweto
276. Zombo.
"""
// Agnostic Extraction Mapping
func mapContent(_ data: String) -> [Content] {
let components = data.components(separatedBy: "\n")
return components.map { component -> Content in
let data = component.split(separator: ".").map(String.init)
let key = getKey(from: data)
let values = getValues(from: data)
return Content(key: key > 223 ? key-1 : key,
ethnie: values.ethnie,
tribues: values.tribues)
}
func getKey(from data: [String]) -> Int {
Int(String(data.first!))!
}
func getValues(from data: [String]) -> (ethnie: String,
tribues: [String]) {
let response = String(data.last!).split(separator: " - ")
var tribues: [String] = []
if response.count > 1 {
tribues = response.last!
.split(separator: ",")
.map { String($0).trimmingCharacters(in: .whitespacesAndNewlines) }
}
let ethnie = String(response.first!)
return (ethnie, tribues)
}
}
// Save to file directory
func saveToFile(_ results: [Content]) {
if let documentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
let filename = documentURL.appendingPathComponent("territories.txt")
FileManager.default.createFile(atPath: filename.path, contents: nil, attributes: nil)
do {
let encoded = try JSONEncoder().encode(results)
let input = String(data: encoded, encoding: .utf8)!
try input.description.write(to: filename, atomically: true, encoding: .utf8)
print(filename)
} catch {
print("logger error: \(error.localizedDescription)")
}
}
}
let results = mapContent(data)
results.forEach { print($0) }
saveToFile(results)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment