Skip to main content

[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.

Comments

  1. #!/usr/bin/python

    def sum(chuoi):
    chuoi = chuoi.lower()
    tong = 0
    for kytu in chuoi:
    gt = ord(kytu) - 96
    tong += gt
    return tong
    def main():
    words = ['attitude','love','knowledge','laziness','whiskey','discipline']
    for chuoi in words:
    print chuoi, sum(chuoi)
    main()

    ReplyDelete
    Replies
    1. chào mừng bạn lần đầu comment vào familug (y)
      Do độ lởm của blog nên không hỗ trợ format code (không indent được) trong comment, để cho tiện đọc bạn vui lòng sử dụng dịch vụ pastebin của các bên như gist.github.com hoặc pastebin.com để code được xinh nhất.

      code của bạn khá ổn, việc dùng biến "chuối" làm mình nhớ lại những ngày xưa vẫn code bằng tiếng Việt (y).

      Cám ơn bạn rất nhiều :D mong bạn sẽ tiếp tục tham gia vào các bài viết sau.

      Delete
  2. import string

    word = raw_input("Enter your word:").upper()

    print sum(string.ascii_uppercase.index(char) + 1 for char in word))

    ReplyDelete
    Replies
    1. lời giải rất hay và khác biệt (y) hoàn toàn có thể viết thành 1 dòng (y)

      Delete
  3. Ruby: ["Attitude", "Love"].each {|char| p (char.downcase.sum + ( - "a".ord + 1)*char.length) }

    ReplyDelete
  4. Thêm qủa LUA nữa cho đẹp

    ReplyDelete
    Replies
    1. https://gist.github.com/tunglam14/72b6e70bac9f462ee5d5

      Delete
  5. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. Copy-paste mistake:

      $ perl -MList::Util=sum -le 'print sum map{ord(lc)-ord(a)+1}split// for @ARGV' "Attitude" "Love"
      100
      54

      Delete
  6. Perl6 one:

    $ perl6 -e 'say [+] .lc.ords.map(*+1-ord("a")) for @*ARGS' "Attitude" "Love"
    100
    54

    ReplyDelete
    Replies
    1. perl thật đáng sợ :-s **+@+“”'[]

      Delete

Post a Comment

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG