LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > 脚本编程 >

check.org闯关过程记录(更新至dash)

时间:2013-10-19 14:45来源:yhddba.com 编辑:yhddba.com 点击:
checkio 是一个国外的python教学游戏网站,通过解决各式各样的任务,进行探索并发现新的岛屿,直至闯关成功~(支持最新的python3哟) 首先是注册时题目: 一个很简单的列表题,我的answ
checkio是一个国外的python教学游戏网站,通过解决各式各样的任务,进行探索并发现新的岛屿,直至闯关成功~(支持最新的python3)

checkio

首先是注册时题目:

QQ图片20130926213930

一个很简单的列表题,我的answer是:

def checkio(els):
    return els[0]+els[1]+els[2]

if checkio([1, 2, 3, 4, 5, 6]) == 6:
    print('Done!')

注册成功后就正式闯关了,可以看到有好几个岛(HOME,O’RELLY等等),OK,就从默认HOME岛开始了~

QQ图片20130926213930

Home岛第一关:

QQ图片20130926213930

我的answer:

#Your optional code here
#You can import some modules or create additional functions
import re

def checkio(line):
    re_obj=re.compile("-+")
    match=re_obj.split(line)
    line='-'.join(match)
    return line

Home岛第二关

QQ图片20130926213930

我的answer:

#Your optional code here
#You can import some modules or create additional functions

def checkio(data):
    temp=list(set(data))
    for i in temp:
        if data.count(i)==1:
            data.remove(i)
    return data

Home岛第三关

QQ图片20130926213930

我的answer:

def checkio(data):
    data.sort()
    num=len(data)
    if num%2 != 0:
        median=data[int((num-1)/2)]
    else:
        median=(data[int(num/2)]+data[int(num/2-1)])/2
    return median

而得分最高的answer是(太cool了!):

def checkio(data):
    sd = sorted(data)
    N = len(data) - 1
    a = sd[N // 2]
    b = sd[(N + 1) // 2]
    return (a+b) / 2

Home岛第四关

QQ图片20130926213930

我的answer:

import re
def checkio(data):
    return (len(data) >= 10 and re.search('[0-9]',data) != None and re.search('[a-zA-Z]',data) != None)

排名第一的answer是(好高级,lambda函数都用了):

import re
def checkio(data):
    'Return True if password strong and False if not'
    return bool(len(data) >= 10 \
        and filter(lambda a:a.isupper(),data) \
        and filter(lambda a:a.islower(),data) \
        and filter(lambda a:a.isdigit(),data))
print 'First ','Done' if checkio('A1213pokl')==False else 'wrong'
print 'Second ','Done' if checkio('bAse730onE4')==True else 'wrong'

Home岛第五关

QQ图片20130926213930

我的answer:

def checkio(text):
    t_count=0
    t_value=''
    list=sorted(set(text.lower()))
    for i in list:
        if i >= 'a' and i <= 'z':
            if text.count(i) > t_count:
                t_count=text.count(i)
                t_value=i
    return t_value

而最佳answer是:

def checkio(text):
    return max(string.ascii_lowercase, key=lambda ch: text.lower().count(ch))

Home岛第六关

QQ图片20130926213930

我的answer:

FIRST_TEN = ["zero", "one", "two", "three", "four", "five", "six", "seven",
             "eight", "nine"]
SECOND_TEN = ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
              "sixteen", "seventeen", "eighteen", "nineteen"]
OTHER_TENS = ["twenty", "thirty", "forty", "fifty", "sixty", "seventy",
              "eighty", "ninety"]
HUNDRED = "hundred"
 
def checkio(number):
    hundreds=int(number/100)
    tens=int(number%100/10)
    ones=number%10
    string=''
    if hundreds  > 0:
        string=FIRST_TEN[hundreds]+' '+HUNDRED
    if tens >1:
        string=string+' '+OTHER_TENS[int(tens-2)]
    elif tens == 1:
        string=string+' '+SECOND_TEN[int(tens*10+ones-10)]
    if ones > 0 and tens != 1:
        string=string+' '+FIRST_TEN[ones]       
    return string.lstrip()

排名第一的answer是(amazing code !!!):

def checkio(i):
    if i < 20:
        result = 'zero,one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thirteen,fourteen,fifteen,sixteen,seventeen,eighteen,nineteen'.split(',')[i]
    elif i < 100:
        result = ',,twenty,thirty,forty,fifty,sixty,seventy,eighty,ninety'.split(',')[i//10]
        if i % 10:
            result += ' ' + checkio(i % 10)
    elif i < 1000:
        result = checkio(i // 100) + ' hundred'
        if i % 100:
            result += ' ' + checkio(i % 100)
    return result

Home岛第七关

Xs and Os Referee    CheckiO

我的answer:

def checkio(game_result):
    for i in [0,1,2]:
        if game_result[i][0] == game_result[i][1] == game_result[i][2]:
            return game_result[i][0].upper()
        if game_result[0][i] == game_result[1][i] == game_result[2][i]:
            return game_result[0][i].upper()
    if game_result[0][0] == game_result[1][1] == game_result[2][2]:
        return game_result[0][0].upper()           
    return "D"

思路和排名第一的answer一样,哈哈~

Home岛第八关

QQ图片20130926213930

我的answer:

def checkio(data):
    string=''
    while data > 0:       
        if data >= 1000:
            string=string+'M'
            data=data-1000
        elif data >=900:
            string=string+'CM'
            data=data-900
        elif data >= 500:
            string=string+'D'
            data=data-500
        elif data >= 400:
            string=string+'CD'
            data=data-400
        elif data >= 100:
            string=string+'C'
            data=data-100
        elif data >=90:
            string=string+'XC'
            data=data-90
        elif data >= 50:
            string=string+'L'
            data=data-50
        elif data >= 40:
            string=string+'XL'
            data=data-40
        elif data >= 10:
            string=string+'X'
            data=data-10
        elif data >=9:
            string=string+'IX'
            data=data-9
        elif data >= 5:
            string=string+'V'
            data=data-5
        elif data >= 4:
            string=string+'IV'
            data=data-4   
        elif data >= 1:
            string=string+'I'
            data=data-1   
    return string

排名第一的answer是:

def checkio(number):
    'return roman numeral using the specified integer value from range 1...3999'
    roman = ''
    romanmappings = {1: "I", 4: "IV", 5: "V", 9: "IX", 10: "X",
                     40: "XL", 50: "L", 90: "XC", 100: "C",
                     400: "CD", 500: "D", 900: "CM", 1000: "M" }                    
    for intVal in sorted(romanmappings.keys(), reverse=True):
        while number >= intVal:
            roman += romanmappings[intVal]
            number -= intVal
    return roman

Home岛第九关

我的answer:

def checkio(data):
    data=list(data)
    if data[2] != ':' :
        data.insert(0,'0')
    if data[5] != ':':
        data.insert(3,'0')
    if len(data) < 8:
        data.insert(6,'0')
    string=''
    for i in range(0,len(data)):       
        if data[i] != ':':
            tmp=bin(int(data[i]))[2:]
            tmp_len=len(tmp)
            if i == 0 and tmp_len < 2:
                tmp='0'*(2-tmp_len)+tmp
            if (i == 3 or i == 6) and tmp_len < 3:
                tmp='0'*(3-tmp_len)+tmp
            if (i == 1 or i == 4 or i == 7) and tmp_len < 4:
                tmp='0'*(4-tmp_len)+tmp
            string=string+tmp+' '
            string=string.replace('0','.').replace('1','-')       
        else:
            string=string+data[i]+' ' 
    return string.rstrip()

排名第一的answer是:

def checkio(data):
    ret = []
    for i, d in enumerate(data.split(':')):
        r, d = '', int(d)
        f, s = d / 10, d % 10
        if i == 0:
            r += '{0:02b} '.format(f)
        else:
            r += '{0:03b} '.format(f)
        r += '{0:04b}'.format(s)
        ret.append(r)
    ret = ' : '.join(ret)
    return ret.replace('0', '.').replace('1', '-')
原文:http://www.yhddba.com/checkio闯关过程记录更新至dash/

转载请保留固定链接: https://linuxeye.com/program/1951.html

------分隔线----------------------------
标签:Pythoncheck.org
栏目列表
推荐内容