質問の駐車スペースのクイズをPythonで解いてみた。

 質問の駐車スペースのクイズPythonで解いてみました。(^_^;

 駐車スペースに、1から順に番号をつけます。ただし、4または13を含む数字は除外します。4*、13*なども除外します。1*3のように、13の間に4以外の数字が入る場合は除外しません。このとき、
(1)1000番まで番号をつけるには、最低何台分のスペースが必要ですか。
(2)1000台ぶんの駐車スペースに番号をつけたら、一番大きな数字は何ですか。

 結果は上の方と同じです。o(^-^)o

● ParkingSpc1.py

# coding: UTF-8
# ParkingSpc1.py

from time import time

def main():
    tm=time()  # Timer Start
    cnt = num = 0
    while cnt< 1000:
        num+=1
        if '4'  in str(num): continue
        if '13' in str(num): continue
        cnt+=1
        if num==1000: print('(1) %d'%cnt)

    print('(2) %d'%num)
    print("Runtime : %.3f [sec]"%(time()-tm))   # Timer Stop & Disp

if __name__ == '__main__':
    main()

●実行結果

(1) 711
(2) 1576
Runtime : 0.000 [sec]

P.S.
 皆さん、正規表現でやっているようなので、正規表現でやるとすれば、reをimportして、2つのif文を次の1つのif文で書き換えればいいです。

import re
...
        if re.search(r'4|13',str(num)): continue

P.S.
 質問の回答のとこのPythonプログラムを2でも3でも動くように修正しました。(^_^;

# coding: UTF-8
# ParkingSpc2.py

import re

def main():
    cnt = num = 0
    while cnt< 1000:
        num+=1
        if re.search(r'4|13',str(num)): continue
        cnt+=1
        if num==1000: print('(1)',cnt)

    print('(2)',num)

if __name__ == '__main__':
    main()