Skip to content

Instantly share code, notes, and snippets.

@widnyana
Created November 12, 2015 04:35
Show Gist options
  • Save widnyana/6a60e6180daaa103ba67 to your computer and use it in GitHub Desktop.
Save widnyana/6a60e6180daaa103ba67 to your computer and use it in GitHub Desktop.
a noobs attempt to ansvia codetalent.
'''
Copyright (C) 2015 Ansvia, Pt.
#Code challenge goal:
Ekstrak nama-nama user yang diawali dengan karakter `@` seperti pada text berikut :
```
hi @budi kamu tahu dimana si @agus? Tadi dia di sini sama @marta.cantik
```
Hasil yang diharapkan adalah berupa list nama-nama user tanpa tanda `@` seperti berikut :
```
["budi","agus","marta.cantik"]
```
Dan output yang diharapkan muncul di layar kurang lebih seperti berikut:
```
testing...
User names:
+ budi
+ agus
+ marta.cantik
SUCCESS.
```
* NOTE: Untuk menjalankan-nya bisa menggunakan script `run.sh` yang telah kami persiapkan
* atau dengan cara Anda sendiri.
*
* RULES:
*
* 1. Hanya boleh menuliskan kode di dalam method yang telah ditandai dengan @TODO(you): code here.
* 2. Tidak diperbolehkan merubah access attribute baik untuk method maupun variable yang sudah ada.
* 3. Setelah selesai segera kirimkan code perubahan-nya ke email `code.challenge@ansvia.com`
'''
import unittest
text = "hi @budi kamu tahu dimana si @agus? Tadi dia di sini sama @marta.cantik"
expected_user_name = ["budi", "agus", "marta.cantik"]
def extract_user_names(string_to_check):
def clean(string):
ignored = {
"@": "",
"?": ""
}
for k, v in ignored.items():
string = string.replace(k, v)
return string
ext = [clean(x) for x in string_to_check.split(" ") if x.startswith("@")]
return ext
class TestExtract(unittest.TestCase):
def test_extract_user_name(self):
self.failUnlessEqual(extract_user_names(text), expected_user_name)
if __name__ == '__main__':
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment