Kurz gesagt, es ist ein Dojo, in dem Sie Ihre Programmierung trainieren können Es kann die Übersee-Version von AtCoder genannt werden ~~ Nun, ich wusste nicht, wie man AtCoder benutzt, also habe ich es nicht gemacht ~~ Persönlich passt es besser zu meiner Haut als AtCoder
Nachdem ich diesen Artikel gelesen hatte, entschied ich mich, ihn auszuprobieren und begann vor ungefähr 3 Tagen. Ratschläge eines 19-jährigen Softwareentwickler-Mädchens
Ich versuche mindestens 5 Code Wars Kata pro Tag zu lösen. CodeWars ist Ihr bester Freund, nicht nur, wenn Sie gerade erst anfangen, sondern wenn Sie jahrelang programmiert haben! Die von CodeWars bereitgestellten Problemlösungen sind immer sehr informativ, und Sie können Ihre Syntax erheblich verbessern, indem Sie einfach durch die von anderen bereitgestellten Lösungen scrollen. Ein weiterer großer Vorteil ist, dass Ihnen bei einem Coding-Interview häufig Fragen gestellt werden, die denen von CodeWars sehr ähnlich sind.
Deshalb bin ich sofort zum Problem gegangen Aber es ist doch ein Artikel für mich Wenn Sie interessiert sind, empfehle ich Ihnen, auf Codewars Kata zuzugreifen
Your goal in this kata is to implement a difference function, which subtracts one list from another and returns the result.
Erstellen Sie eine Funktion, die den Inhalt einer Liste von einer anderen subtrahiert
It should remove all values from list a, which are present in list b.
Subtrahieren Sie alle Funktionen in Liste b
Beispiel)
array_diff([1,2],[1]) == [2]
If a value is present in b, all of its occurrences must be removed from the other:
Wenn b mehrere Zahlen enthält, subtrahieren Sie alle
array_diff([1,2,2,2,3],[2]) == [1,3]
Meine Antwort
def array_diff(a, b):
return [a1 for a1 in a if a1 not in b]
Ich glaube, ich konnte ein wenig klug antworten ...?
Die Antworten anderer Leute sind übrigens ... Best Practice
def array_diff(a, b):
return [x for x in a if x not in b]
Genau zusammen! !! !! Ich frage mich, ob ich mich am dritten Tag daran gewöhnt habe, Kata zu schreiben
Mach einen Diamanten! !! !! !! Ich habe die Abbildung 1, 3, 5, 7 gesehen ... Es scheint eine Funktion zu haben, Diamanten jeder Größe herzustellen
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"
Meine Antwort
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
Der Code ist nicht schön, aber die Ausgabe ist zu schön und ich bin zufrieden
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
Ich benutze abs (n / 2- i) gut und lasse den Fall weg, den ich getan habe, es ist klug
später
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])
Machen Sie einen halben Diamanten und verwenden Sie ihn richtig, indem Sie von oben oder unten nachzeichnen Das ist auch klug
You have an array of numbers.
Gib eine Zeichenfolge
Your task is to sort ascending odd numbers but even numbers must be on their places.
Sortieren Sie nur ungerade Zahlen, lassen Sie gerade Zahlen so wie sie sind
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.
Null ist eine gerade Zahl. Wenn es sich um ein leeres Array handelt, ist return auch ein leeres Array
Example
sort_array([5, 3, 2, 8, 1, 4]) == [1, 3, 2, 8, 5, 4]
Meine Antwort
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
Ich konnte mir keine gute Methode vorstellen, also teilte ich sie gehorsam in ungerade und gerade Teile.
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]
Nachdem ich Quoten erstellt habe, regeneriere ich das Array mit for x in arr
Ist nicht "x wenn x% 2 == 0" bei gleichmäßiger Verarbeitung schwierig?
list.pop () kann das letzte Element des Arrays abrufen und löschen Mit list.pop (0) können Sie dasselbe mit dem ersten Element tun Sie können das letzte Element des ungeraden Arrays mit "else odds.pop ()" abrufen und löschen Wenn Sie es in aufsteigender Reihenfolge betrachten, indem Sie es in aufsteigender Reihenfolge betrachten ... klug
Beispiel
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 oder weniger, 3,Wenn Sie Vielfache von 5, 3 auflisten,5,6,9 und Summe ist 23
Finish the solution so that it returns the sum of all the multiples of 3 or 5 below the number passed in.
Finde die Summe
Note: If the number is a multiple of both 3 and 5, only count it once.
Note:Wenn es ein Vielfaches von beidem ist, wird es einmal gezählt
Meine Antwort
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)])
Das einfachste? Summe der Vielfachen von 3 + Summe der Vielfachen von 5-15 Summe der Vielfachen von 15
Best Practice
def solution(number):
return sum(x for x in range(number) if x % 3 == 0 or x % 5 == 0)
Summe der durch 3 oder 5 teilbaren Zahlen Das ist auch einfach
This time we want to write calculations using functions and get the results. Let's have a look at some examples:
Lass einen Kerl rechnen. Zum Beispiel ...
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...:
--Funktionen sind 0-9
Übrigens habe ich bei der Bedienung von 7kyu einen Fehler gemacht und das Problem von 5kyu gewählt, das überwiegend schwieriger als gewöhnlich ist. Die Antwort ist ein unerträglicher Push-Code. .. .. Oh, das ist nicht lesenswert
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
Und dies ist die Best-Practice-Antwort
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
...? ?? ?? Was für ein cooler
ich werde es lesen
def zero(f = None): return 0 if not f
Bisher ist es eine Grundstruktur, die ich hätte tun können, Reue (es ist peinlich, den verdammten Code zu veröffentlichen)
else f(0)
...? ?? ?? Nanikore
Dies nimmt eine Funktion als Argument an.
Ich wusste nicht, dass ich das schaffen könnte. Darüber hinaus mit Lambda.
def plus(y): return lambda x: x+y
... Anscheinend ist Kimo wie "Lambda"
Schauen wir uns als Beispiel langsam sieben (mal (fünf ())) an.
Erstens "sieben (mal (fünf ()))" Wird "sieben (mal (5))" sein Weiter, weil der Rückgabewert von "times (5)" "Lambda x: x + y" ist
def f(x):
return x * 5
Wird zurückgegeben
Und da wir für diese Funktion f (7) sind, ist der Rückgabewert "35".
Ich habe lange gebraucht, um so weit zu lesen
Immerhin ist 5kyu immer noch schwierig. .. ..
Recommended Posts