En un mot, c'est un dojo où vous pouvez entraîner votre programmation Il peut être appelé la version d'outre-mer d'AtCoder ~~ Eh bien, je ne savais pas comment utiliser AtCoder, donc je ne l'ai pas fait ~~ Personnellement, cela convient mieux à ma peau qu'AtCoder
Après avoir lu cet article, j'ai décidé de l'essayer et j'ai commencé il y a environ 3 jours. Conseils d'une jeune développeur de logiciels de 19 ans
J'essaye de résoudre au moins 5 Code Wars Kata par jour. CodeWars est votre meilleur ami, non seulement lorsque vous débutez, mais aussi lorsque vous codez depuis des années! Les solutions aux problèmes fournies par CodeWars sont toujours très informatives et vous pouvez grandement améliorer votre syntaxe simplement en faisant défiler les solutions fournies par d'autres. Un autre gros avantage est que lorsque vous vous rendez à une entrevue de codage, on vous pose souvent des questions très similaires à celles que pose CodeWars.
C'est pourquoi je suis allé au problème immédiatement Mais après tout c'est un article pour moi Si vous êtes intéressé, je vous recommande d'accéder aux kata codewars
Your goal in this kata is to implement a difference function, which subtracts one list from another and returns the result.
Créer une fonction qui soustrait le contenu d'une liste d'une autre
It should remove all values from list a, which are present in list b.
Soustrayez toutes les fonctions de la liste b
Exemple)
array_diff([1,2],[1]) == [2]
If a value is present in b, all of its occurrences must be removed from the other:
S'il y a plusieurs nombres dans b, soustrayez-les tous
array_diff([1,2,2,2,3],[2]) == [1,3]
Ma réponse
def array_diff(a, b):
return [a1 for a1 in a if a1 not in b]
Je pense que j'ai pu répondre un peu intelligemment ...?
Au fait, les réponses des autres sont ... Best Practice
def array_diff(a, b):
return [x for x in a if x not in b]
Exactement ensemble! !! !! Je me demande si je me suis habitué à écrire des kata le troisième jour
Faites un diamant! !! !! !! J'ai vu le chiffre 1, 3, 5, 7 ... Il semble avoir une fonction pour faire des diamants de chaque taille
Jamie is a programmer, and James' girlfriend. She likes diamonds, and wants a diamond string from James. Since James doesn't know how to make this happen, he needs your help.
Task
You need to return a string that looks like a diamond shape when printed on the screen, using asterisk (*) characters. Trailing spaces should be removed, and every line must be terminated with a newline character (\n).
Return null/nil/None/... if the input is an even number or negative, as it is not possible to print a diamond of even or negative size.
Examples
A size 3 diamond:
*
***
*
...which would appear as a string of " *\n***\n *\n"
A size 5 diamond:
*
***
*****
***
*
...that is: " *\n ***\n*****\n ***\n *\n"
Ma réponse
def diamond(n):
# Make some diamonds!
if n%2 ==0 or n <1:
return None
ans=''
for i in range(1,n+1,2):
ans += '{}{}\n'.format(' '*((n-i)//2) ,'*'*i)
for i in range(n-2,0,-2):
ans += '{}{}\n'.format(' '*((n-i)//2) ,'*'*i)
return ans
Le code n'est pas beau, mais le rendu est trop beau et j'en suis satisfait
Best Practice
def diamond(n):
if n > 0 and n % 2 == 1:
diamond = ""
for i in range(n):
diamond += " " * abs((n/2) - i)
diamond += "*" * (n - abs((n-1) - 2 * i))
diamond += "\n"
return diamond
else:
return None
J'utilise bien les abdominaux (n / 2- i) et en omettant le cas que j'ai fait, c'est intelligent
plus tard
def diamond(n):
if not n%2 or n<1: return None
d = [" "*i+"*"*(n-2*i)+"\n" for i in range(n/2,0,-1)]
return ''.join(d) + "*"*n + "\n" + ''.join(d[::-1])
Faites un demi-diamant et utilisez-le correctement en traçant du haut ou du bas C'est aussi intelligent
You have an array of numbers.
Donner une ficelle
Your task is to sort ascending odd numbers but even numbers must be on their places.
Trier uniquement les nombres impairs, laisser les nombres pairs tels quels
Zero isn't an odd number and you don't need to move it. If you have an empty array, you need to return it.
Zéro est un nombre pair, s'il s'agit d'un tableau vide, return est également un tableau vide
Example
sort_array([5, 3, 2, 8, 1, 4]) == [1, 3, 2, 8, 5, 4]
Ma réponse
def sort_array(ar):
# Return a sorted array.
odd = sorted([a for a in ar if a%2 ==1])
even = [a for a in ar if a%2 ==0]
flg = [a%2 for a in ar]
ans = []
od = 0
ev = 0
for i in range(len(ar)):
if flg[i]:
ans.append(odd[od])
od +=1
if not flg[i]:
ans.append(even[ev])
ev+=1
return ans
Je ne pouvais pas penser à une bonne méthode, alors je l'ai docilement divisée en parties impaires et paires.
Best Practice
def sort_array(arr):
odds = sorted((x for x in arr if x%2 != 0), reverse=True)
return [x if x%2==0 else odds.pop() for x in arr]
Après avoir créé les cotes, je régénère le tableau avec for x in arr
«X if x% 2 == 0» n'est-il pas difficile avec un traitement uniforme?
list.pop () peut récupérer et supprimer le dernier élément du tableau Avec list.pop (0), vous pouvez faire de même avec le premier élément ʻElse odds.pop () `peut récupérer et supprimer le dernier élément du tableau impair En le mettant dans l'instruction for, si vous le regardez un par un dans l'ordre croissant ... intelligent
Exemple
odds=[5,3,1]
print('get:',odds.pop(),',odd:',odds)
==> get: 1 ,odd: [5, 3]
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
10 ou moins, 3,Si vous indiquez des multiples de 5, 3,5,6,9 et la somme est 23
Finish the solution so that it returns the sum of all the multiples of 3 or 5 below the number passed in.
Trouvez la somme
Note: If the number is a multiple of both 3 and 5, only count it once.
Note:S'il s'agit d'un multiple de l'un ou l'autre, il sera compté une fois
Ma réponse
def solution(number):
return sum([x for x in range(0,number,3)]+[x for x in range(0,number,5)]) - sum([x for x in range(0,number,15)])
Le plus simple? Somme des multiples de 3 + Somme des multiples de 5-15 Somme des multiples de 15
Best Practice
def solution(number):
return sum(x for x in range(number) if x % 3 == 0 or x % 5 == 0)
Somme des nombres divisible par 3 ou 5 C'est aussi simple
This time we want to write calculations using functions and get the results. Let's have a look at some examples:
Faites un gars pour calculer. Par exemple ...
seven(times(five())) # must return 35
four(plus(nine())) # must return 13
eight(minus(three())) # must return 5
six(divided_by(two())) # must return 3
Requirements:
There must be a function for each number from 0 ("zero") to 9 ("nine")
There must be a function for each of the following mathematical operations: plus, minus, times, dividedBy (divided_by in Ruby and Python)
Each calculation consist of exactly one operation and two numbers
The most outer function represents the left operand, the most inner function represents the right operand
Divison should be integer division. For example, this should return 2, not 2.666666...:
Au fait, j'ai commis une erreur dans le fonctionnement de 7kyu et j'ai choisi le problème de 5kyu qui est extrêmement plus difficile que d'habitude. La réponse est un code push insupportable. .. .. Oh, cela ne vaut pas la peine d'être lu
def zero(num = 0.5): #your code here
if num == 0.5:
return 0
return clac(0,num[0],num[1])
def one(num = 0.5): #your code here
if num == 0.5:
return 1
return clac(1,num[0],num[1])
def two(num =0.5): #your code here
if num == 0.5:
return 2
return clac(2,num[0],num[1])
def three(num = 0.5): #your code here
if num == 0.5:
return 3
return clac(3,num[0],num[1])
def four(num = 0.5): #your code here
if num == 0.5:
return 4
return clac(4,num[0],num[1])
def five(num = 0.5): #your code here
if num == 0.5:
return 5
return clac(5,num[0],num[1])
def six(num = 0.5): #your code here
if num == 0.5:
return 6
return clac(6,num[0],num[1])
def seven(num = 0.5): #your code here
if num == 0.5:
return 7
return clac(7,num[0],num[1])
def eight(num = 0.5): #your code here
if num == 0.5:
return 8
return clac(8,num[0],num[1])
def nine(num = 0.5): #your code here
if num == 0.5:
return 9
return clac(9,num[0],num[1])
def plus(num): #your code here
return [num,1]
def minus(num): #your code here
return [num,2]
def times(num): #your code here
return [num,3]
def divided_by(num): #your code here
return [num,4]
def clac(a,b,operation):
if operation ==1:
return a + b
if operation ==2:
return a - b
if operation ==3:
return a * b
if operation ==4:
return a // b
Et c'est la meilleure solution
def zero(f = None): return 0 if not f else f(0)
def one(f = None): return 1 if not f else f(1)
def two(f = None): return 2 if not f else f(2)
def three(f = None): return 3 if not f else f(3)
def four(f = None): return 4 if not f else f(4)
def five(f = None): return 5 if not f else f(5)
def six(f = None): return 6 if not f else f(6)
def seven(f = None): return 7 if not f else f(7)
def eight(f = None): return 8 if not f else f(8)
def nine(f = None): return 9 if not f else f(9)
def plus(y): return lambda x: x+y
def minus(y): return lambda x: x-y
def times(y): return lambda x: x*y
def divided_by(y): return lambda x: x/y
...? ?? ?? Quel cool
Je vais le lire
def zero(f = None): return 0 if not f
Jusqu'ici, c'est une structure de base que j'aurais dû pouvoir faire, des remords (c'est embarrassant de publier le putain de code)
else f(0)
...? ?? ?? Nanikore
Cela prend une fonction comme argument.
Je ne savais pas que je pouvais faire ça. De plus, en utilisant lambda.
def plus(y): return lambda x: x+y
... Apparemment, Kimo est comme lambda
Jetons un regard lent à «sept (fois (cinq ()))» à titre d'exemple.
Premièrement, sept (fois (cinq ()))
Sera sept (fois (5))
Ensuite, parce que la valeur de retour de times (5)
est lambda x: x + y
def f(x):
return x * 5
Sera retourné
Et puisque nous sommes f (7) pour cette fonction, la valeur de retour sera «35».
Il m'a fallu beaucoup de temps pour lire jusqu'ici
Après tout, 5kyu est toujours difficile. .. ..
Recommended Posts