Last active
November 15, 2022 18:39
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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