SPOJ の Web サイトを発見し、問題に対する最初の解決策を提出しました: Alphacode http://www.spoj.com/problems/ACODE/
オンライン審査員は、次のコードで NZEC エラーを返しました。理由がわかりません。Python 3.2.3 (functools.lru_cache は Python3.2 で登場) を選択し、lru_cache を削除して memoize デコレーターに置き換えようとしましたが、同じ問題が発生しました。
from functools import lru_cache
@lru_cache(maxsize=10000)
def acode(s, i=0):
if i == len(s):
return 1
if s[i] == "0":
return 0
res = acode(s, i+1)
if i + 1 < len(s) and (10 * int(s[i]) + int(s[i+1]) <= 26):
res += acode(s, i+2)
return res
def main():
i = input().strip()
while i != "0":
print(acode(i))
i = input().strip()
if __name__ == "__main__":
import sys
try:
main()
except:
sys.exit(0)
次のコマンドでテストできます。
$ echo "123\n1111\n21\n0" | python3 acode.py
注: 私も「try: except:」なしで送信しましたが、SPOJ Web サイトで出力ログを見つけることができません。