Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

A naive implementation in Nimrod:

     proc main(max_a0: int): int =
       var a, longest, len, max_len : int
     
       for a0 in countup(1, max_a0):
         a = a0
         len = 0
     
         while a != 1:
           len += 1
           if (a mod 2 != 0): a = (3*a + 1)
           a = a div 2
     
         if len > max_len:
           max_len = len
           longest = a0
     
       return longest
     
     # Main program starts here
     echo(main(1000000))
Takes 0.76s (the C program in TFA takes 0.58s)


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: