Saturday, 9 May 2015

[Code] Tính từ cùng 9gag

UPDATE: đã có code Go, Ruby.  Các ngôn ngữ khác đang chờ bạn đóng góp :p 
Tối ngủ, sốt, nóng, thấy 9gag có cái hình hay hay, code ngay cho nóng

http://9gag.com/gag/aWWP7bd?ref=fbp


Hãy nghĩ thuật toán bạn sẽ dùng để tính ra số theo quy tắc trong bức hình trước khi bấm đọc tiếp.


Thuật toán khá đơn giản:
- Map lần lượt từng chữ với từng số: A-1, B-2 ...
như vậy có thể lấy ký tự cần tính trừ đi số đại diện cho A rồi + 1 vào là đổi được chữ ra số
- Chú ý không phân biệt hoa thường

Ta có hàm sum:
func sum(s string) int {
    s = strings.ToLower(s)
    sum := 0
    for _, char := range s {
        sum += int(char-'a') + 1
    }
    return sum
}
Dễ thấy từ nào càng dài và chứa càng nhiều chữ cuối bảng chữ cái thì sẽ càng to:
- PROCASTINATION: 174
- masturbation: 153
- pussy: 100
- discipline: 100

--- ai có đầu óc khoa học và chăm chỉ có thể mở rộng chương trình để tìm tất cả các từ có tổng == 100 ~ kết quả sẽ khá bất ngờ.

Chạy code trực tiếp ở
Golang:  https://play.golang.org/p/6oKJFUf6EP
Ruby: http://www.rubystub.com/23396892/ (Thank to +Lam Tung )
Python: ???

Hết.
Happy meo meo.