当前位置: 代码迷 >> 综合 >> CheckIO-ELECTRONIC STATION
  详细解决方案

CheckIO-ELECTRONIC STATION

热度:88   发布时间:2024-02-20 09:38:57.0

CheckIO-ELECTRONIC STATION

    • 题目1:Sum Numbers
    • 题目2:Sort by Extension
    • 题目3:Digits Multiplication
    • 题目4:Acceptable Password II
    • 题目5:Acceptable Password III
    • 题目6:Acceptable Password IV
    • 题目7:Acceptable Password V
    • 题目8:Acceptable Password VI
    • 题目9:All Upper II
    • 题目10:Ascending List
    • 题目11:Boolean Algebra
    • 题目12:Brackets
    • 题目13:Find Sequence
    • 题目14:Surjection Strings
    • 题目15:Mathematically Lucky Tickets
    • 题目16:Similar Triangles
    • 题目17:Verify Anagrams
    • 题目18:What Is Wrong With This Family?
    • 题目19:Inside Block
    • 题目20:Can You Pass?
    • 题目21:Unix Match. Part 1
    • 题目22:Unix Match. Part 2

有些题目尚未解锁,解锁之后再更新

题目1:Sum Numbers

在这里插入图片描述
判断所给单词在句子中是否是按顺序出现的。
回答:

def words_order(text: str, words: list) -> bool:# text = 'hi world im here'# words = ['world', 'here']try:order = [][text.split().index(x) for x in words]for x in words:order.append(text.index(x))if order == sorted(order) and len(set(words)) == len(words):return Trueelse:return Falseexcept:return False

题目2:Sort by Extension

在这里插入图片描述
以文件名的扩展名进行排序

from typing import Listdef fun_special(files: List[str]) -> List[str]:return sorted(files)def fun_normal(files: List[str]) -> List[str]:files = [[x.rsplit('.',1)[-2],x.rsplit('.',1)[-1]] for x in files]files = sorted(files,key=lambda x:(x[1] , x[0]))return ['.'.join(x) for x in files]def sort_by_ext(files: List[str]) -> List[str]:special = []normal = []for x in files:if '' in x.rsplit('.',1):special.append(x)else:normal.append(x)return fun_special(special) + fun_normal(normal)

题目3:Digits Multiplication

在这里插入图片描述
所给数字中,计算所有除了0以为的数字的乘积

def checkio(number: int) -> int:number = (str(number).replace('0',''))a = 1for x in number:a *= int(x)return a

题目4:Acceptable Password II

在这里插入图片描述
判断一个字符串有六个以上的字符,且有最少一个数字

import re
def is_acceptable_password(password: str) -> bool:if bool(re.search(r'\d', password)):return len(password)>6return False

题目5:Acceptable Password III

在这里插入图片描述
判断一个字符串有六个以上的字符,且有最少一个数字,但不能全是数字

import re
def is_acceptable_password(password: str) -> bool:if bool(re.search('[0-9]',password)) and not password.isdigit():return len(password)>6else:return False

题目6:Acceptable Password IV

在这里插入图片描述
判断一个字符串有六个以上的字符,且有最少一个数字,但不能全是数字,当字符串长度大于9时,则返回True

import re
def is_acceptable_password(password: str) -> bool:if bool(re.search('[0-9]',password)) and not password.isdigit():return len(password)>6return len(password)>9

题目7:Acceptable Password V

在这里插入图片描述
判断一个字符串有六个以上的字符,且有最少一个数字,但不能全是数字,当字符串长度大于9时,则返回True,但是整个字符串不能以任何形式出现password

import re
def is_acceptable_password(password: str) -> bool:if bool(re.search('password', password, re.IGNORECASE)):return Falseelse:if bool(re.search('[0-9]',password)) and not password.isdigit():return len(password)>6return len(password)>9

题目8:Acceptable Password VI

在这里插入图片描述
判断一个字符串有六个以上的字符,且有最少一个数字,但不能全是数字,当字符串长度大于9时,则返回True,但是整个字符串不能以任何形式出现password,即使长度超过十,也需要有三个不同的字符

import re
def is_acceptable_password(password: str) -> bool:# password = 'aaaaaa1'if bool(re.search('password', password, re.IGNORECASE)):return Falseelse:if len(set(password)) < 3:return Falseif bool(re.search('[0-9]',password)) and not password.isdigit():return len(password)>6return len(password)>9

题目9:All Upper II

在这里插入图片描述
判断所给字符串是否全为大写

def is_all_upper(text: str) -> bool:return text.isupper()

题目10:Ascending List

在这里插入图片描述
判断所给数列是否递增

from typing import Iterable
def is_ascending(items: Iterable[int]) -> bool:return sorted(items) == items and len(set(items)) == len(items)

题目11:Boolean Algebra

未解锁

题目12:Brackets

未解锁

题目13:Find Sequence

未解锁

题目14:Surjection Strings

在这里插入图片描述
判断两个所给字符是否是相同的格式匹配

def isometric_strings(str1: str, str2: str) -> bool:for x,y in zip(str1,str2):str1 = str1.replace(x,y)return str1 == str2

题目15:Mathematically Lucky Tickets

在这里插入图片描述
给出一串组合数字,随意组合判断是否有一种组合使其为100
!!!

from itertools import productdef possible_results(data):yield int(data)for i in range(1, len(data)):for (x,y) in product(possible_results(data[:i]), possible_results(data[i:])):yield from (x+y, x-y, x*y)if y:yield x/y

题目16:Similar Triangles

在这里插入图片描述
判断两个三角形是否为相似三角形

from typing import List, Tuple
Coords = List[Tuple[int, int]]
from itertools import combinations
import numpy as npdef side_lenght(coord):a = []for point in list(combinations(iter(coord),2)):a.append(distance(point))return adef distance(point):point = list(point)d1 = np.sqrt(np.sum(np.square(np.array(point[0]) - np.array(point[1]))))return d1def similar_triangles(coords_1: Coords, coords_2: Coords) -> bool:c1 = sorted(side_lenght(coords_1))c2 = sorted(side_lenght(coords_2))if c1[0]/c2[0] == c1[1]/c2[1] and c1[1]/c2[1] == c1[2]/c2[2]:return Truereturn False

题目17:Verify Anagrams

在这里插入图片描述
两个字符串是否是同构异序词。即是否一个字符串可以由另一个字符串改变顺序得到。

def verify_anagrams(a, b):a = a.upper().replace(' ','')b = b.upper().replace(' ','')return sorted(a) == sorted(b)

题目18:What Is Wrong With This Family?

在这里插入图片描述
判断所给家谱图是否正确

from collections import defaultdictdef is_family(tree):father =[];son =[];for a in tree:father.append(a[0]);son.append(a[1]);father = set(father)##自己不能做自己爸爸的爸爸for x in tree:for y in tree:if x[0]==y[1] and y[0]==x[1]:return False##自己不能做自己的爸爸for x,y in tree:if x==y:return Falseif len(son) != len(set(son)):return Falsefor a in list(father):if a in son:father.remove(a)if len(father) == 1:return Truereturn False

其他人的答案

def is_family(tree):anscestor = defaultdict(set)for father, son in tree:if father == son: return Falseif father in anscestor[son]: return Falseif son in anscestor[father]: return Falseif anscestor[father] & anscestor[son]: return Falseanscestor[son] |= {
    father} | anscestor[father]adam = [person for person in anscestor if not anscestor[person]]return len(adam) == 1

题目19:Inside Block

未解锁

题目20:Can You Pass?

未解锁

题目21:Unix Match. Part 1

在这里插入图片描述
判断所给unix格式的文件名是否和所给文件名相符合。

#checkio不支持fnmatch
from fnmatch import fnmatch
def unix_match(filename: str, pattern: str) -> bool:return bool(fnmatch(filename,pattern))

使用正则化匹配

import redef unix_match(filename: str, pattern: str) -> bool:return bool(re.fullmatch(pattern.replace('.', '\.').replace('*', '.*').replace('?', '.'), filename))

题目22:Unix Match. Part 2

在这里插入图片描述

#checkio不支持fnmatch
from fnmatch import fnmatch
def unix_match(filename: str, pattern: str) -> bool:return bool(fnmatch(filename,pattern))

其他人的答案

from re import match
def unix_match(filename: str, pattern: str) -> bool:pattern = pattern.replace('.', '\\.').replace('?', '.').replace('*', '.*')pattern = pattern.replace('[!', '[^').replace('[]', '[^.]')pattern = pattern.replace('[^]', '\\[!\\]')return match(pattern, filename) is not None
  相关解决方案