2012-04-17 1 views
1

Это простая программа, написанная для решения CodeJam's recycled numbers (я знаю, что ее можно улучшить).Простая программа (2 для циклов) сбой в PyPy при работе с CPython

Он работает с CPython, но падает с PyPy v1.8 с ошибкой:

RPython traceback: 
    File "jit_metainterp_compile.c", line 19477, in send_loop_to_backend 
    File "jit_backend_x86_assembler.c", line 2293, in Assembler386_assemble_loop 
    File "jit_backend_x86_regalloc.c", line 462, in RegAlloc_prepare_loop 
    File "jit_backend_x86_regalloc.c", line 1027, in RegAlloc__prepare 
    File "jit_backend_x86_regalloc.c", line 3657, in RegAlloc__compute_vars_longevity 
Fatal RPython error: AssertionError 
[1] 8440 abort  pypy cj.py 

Код:

#!/usr/bin/env python2 

def permutations(a,b,x): 

    y = str(x) 
    cnt = 0 
    for i in range(1,len(y)): 
     j = int(y[i:]+y[:i]) 
     if j == x: 
      break 
     elif j > x and j >= a and j <= b: 
      cnt += 1 

    return cnt 

nc = int(raw_input()) 
for c in xrange(nc): 
    a, b = map(int,raw_input().split()) 

    cnt = 0 
    for i in range(a,b+1): 
     cnt += permutations(a,b,i) 

    print "Case #%i: %i" % (c+1, cnt) 

Пример ввода:

4 
1 9 
10 40 
100 500 
1111 2222 
+0

Хм, просто работал для меня как в окнах CPython 2.7.2 (64-разрядных), так и в PyPy 1.8.0 (32-разрядный) (хотя у меня была ошибка EOF в обоих, пока я не изменил первую строку на 3). Возможно, у вас что-то сломано в вашей установке PyPy, есть ли какие-либо другие программы, которые плохо работают в PyPy? –

+0

@JohnGainesJr .: Извините, я отключил последнюю строку ввода, которая была главным виновником причинения аварии. Я подтвердил, что он рушится и для других. – wting

ответ

4

Это выглядит как ошибка. В самом деле, это может быть связанно с этим сообщением об ошибке:

https://bugs.pypy.org/issue1075

Попробуйте последнюю ночь.