Die Joker-Konferenz fand am 19. und 20. Oktober in St. Petersburg statt - die beste Veranstaltung fĂŒr diejenigen, die das Gleiche lieben wie wir: coole Berichte, Kommunikation mit fortgeschrittenen Java-Experten und Aufgaben. Wir werden die dritte Ausgabe der Aufgaben von GridGain (
1 ,
2 ) nicht loben, wir zitieren besser das Feedback der Teilnehmer:
"Ihre Aufgaben schienen dumm und nicht mit der IT verbunden zu sein"
"Ausgezeichnete Aufgaben, wie immer (obwohl ich noch keine gemeistert habe)"
"Sucht in Aufgaben"
"Top Aufgaben, wie immer"Wir veröffentlichen wie versprochen detaillierte Lösungen. Sie brachten es unter dem Spoiler heraus, damit diejenigen, die die Konferenz verpassten, sich versuchen konnten.

Aufgabe 1
Vor drei Monaten haben wir diese Aufgabe geschrieben, aber im Oktober 2018 kam der PrĂ€sident auf die Initiative, 282 Artikel zu entkriminalisieren, worĂŒber wir uns unglaublich freuen, aber wir waren unruhig, die Texte zu wiederholen. Lassen Sie also alles in dieser Aufgabe so bleiben, wie es war. *
Das Center-on-a-Letter ĂŒberwacht die Platzierung anstöĂiger Memes sowie deren Likes und Reposts in sozialen Netzwerken. Im Rahmen der digitalen Transformation wurde das gesamte BĂŒro der Ăberwachungsabteilung durch kĂŒnstliche Intelligenz ersetzt. Die Innovation hat dazu beigetragen, die Wahrscheinlichkeit zu berechnen, mit der Benutzer von Likes zu Reposts wechseln, um den Fall erfolgreich vor Gericht zu bringen. Zuvor wurde eine Verurteilung mit einem Buchstaben mit einer Wahrscheinlichkeit von 90% in 192 Tagen erlassen. Durch die Automatisierung des Prozesses wurden die Indikatoren mit einer Wahrscheinlichkeit von 99,9% auf 12 Tage gebracht.
Frage: Wie oft hat der innovative Ansatz die Umwandlung von Memasics in Ăberzeugungen um 282 erhöht, wenn die HĂ€ufigkeit von SĂ€tzen exponentiell verteilt ist?
Lösung zu Problem 1* Nachdem Sie Zitate und eine Arbeit am Stand unseres Autors benannt haben, können Sie sofort ein Geschenk erhalten. Das sind natĂŒrlich Yuri Khoy (Klinsky), "Gas Sector" und der Track "Homeless".
Nach dem Ausgangszustand, da Die HĂ€ufigkeit von SĂ€tzen hat eine Exponentialverteilung, dann vor der EinfĂŒhrung des Roboters und nachdem wir die folgenden AusdrĂŒcke zur Beurteilung der Wahrscheinlichkeit haben, dass ein Satz in der Zeit †t ausgesprochen wurde:
F1(t)=1âeâ lambda1âtF2(t)=1âeâ lambda2ât
wo lambda1, lambda2 - Dies sind unbekannte Parameter, die die HĂ€ufigkeit von SĂ€tzen angeben. T ist der Zeitparameter. Dabei stellt sich heraus, dass:
F1(192)=0,9F2(12)=0,999
Aus diesen Gleichungen lassen sich die Parameter sehr leicht ausdrĂŒcken lambda1, lambda2
lambda1=â ln(1â0,9)/192 sim=0,012 lambda2=â ln(1â0,999)/12 sim=0,576
Aus der Annahme, dass die Anzahl der SĂ€tze und die Anzahl der Memasics linear zusammenhĂ€ngen, können wir schlieĂen, dass das VerhĂ€ltnis lambda1, lambda2 gibt nur den gewĂŒnschten Wert:
lambda2/ lambda1 sim=48

Aufgabe 2
Aus der Sicht des buddhistischen Wassili ist der Code nicht perfekt, wenn nichts hinzugefĂŒgt werden muss, sondern wenn nichts entfernt werden kann. Angetrieben von dieser Idee entschied sich unser Vasily fĂŒr die Verbesserung von EpsilonGC und enthĂŒllte der Welt Dzen-GC - ein Produkt des perfekten Denkens, das den Heap-Speicher nicht nur löschen, sondern auch nicht einmal zuordnen kann. Offensichtlich ist die Zuordnung in der JVM mit diesem innovativen GC nur auf dem Stapel und nur fĂŒr primitive Typen möglich.
Um die neue FunktionalitĂ€t zu testen, hat Vasily beschlossen, eine Funktion in Java zu schreiben, die einen Modus fĂŒr 6 Werte findet (Modus ist der Wert in der Gruppe der Beobachtungen, der am hĂ€ufigsten auftritt), dh die folgende Signatur hat:
public static int mode(int n0, int n1, int n2, int n3, int n4, int n5)
Um der Erleuchtung nĂ€her zu kommen, hat Vasily keine zusĂ€tzlichen lokalen Variablen und Methoden in seinem Code deklariert und auch nur mit dem kleinen Finger seines linken FuĂes programmiert.
Aufgabe: Hilf Vasily bei der Implementierung dieser Funktion (es dĂŒrfen alle Finger benutzt werden).
Lösung zu Problem 2Versuchen wir herauszufinden, wie dieses Problem gelöst werden könnte, wenn es keine so strengen EinschrĂ€nkungen gĂ€be. Sagen Sie einfach, dass die Werte in einem Array ĂŒbertragen werden und es ratsam ist, den zusĂ€tzlichen Speicher nicht zu verwenden (aber ein bisschen ist möglich).
Dann werden wir die Optionen notieren, die Map <Integer, Integer> verwenden, und feststellen, dass der Modus in einem sortierten Array am bequemsten zu suchen ist: Wenn der Wert wiederholt wird, sind alle Duplikate in der NĂ€he. Wir sortieren das Array und finden in einem Durchgang (und zwei Variablen) den Wert mit der maximalen Anzahl von Wiederholungen.
Beachten Sie nun Folgendes:
1) Sie können die Werte rekursiv sortieren.
2) Wir haben nur 6 sortierte Werte.
3) Wenn der Wert dreimal wiederholt wird (die HĂ€lfte aller Werte) - das ist schon ein Mod!
3.1) Wenn nicht, aber es gibt 2 Wiederholungen - dann ist dies ein Mod!
3.2) Wenn keine doppelten Werte vorhanden sind, ist jeder Wert ein Modus.
Genau genommen kann ein Problem viele Lösungen haben, aber wir mochten es als das einfachste und harmonischste.

Aufgabe 3
Zwei DrogenabhĂ€ngige beschlossen, aus der Matrix auszusteigen und zu verstehen, welcher von ihnen der AuserwĂ€hlte war. Zu diesem Zweck erhielten sie 1 Packung blaue und 4 Packungen rote Pillen (Packungen gleicher GröĂe). Um den Effekt zu verstĂ€rken, beschlossen sie, sie mit GrĂŒn zu trinken.
Plötzlich stellte sich heraus, dass sich aufgrund des Matrix-Fehlers (wie DrogenabhĂ€ngige dachten) ihre Gesichter, die ursprĂŒnglich die RGB-Farben # 2D241D und # F4E3E1 hatten, in AbhĂ€ngigkeit von der Anzahl der verwendeten Tabletten und des verwendeten GrĂŒntees zu Ă€ndern begannen: Jede Tablette (oder 1 ml grĂŒner Tee) erhöhte linear die Menge des entsprechenden die Farben im Gesicht des SĂŒchtigen.
Gleichzeitig darf der Wert jeder RGB-Komponente #FF nicht ĂŒberschreiten, dh die weitere Verwendung von Tabletten oder BrillantgrĂŒn hat keine Auswirkung. Zelenka hatte anfangs mehrere volle FlĂ€schchen mit jeweils 20 ml, insgesamt 2 mal weniger in ml als die Gesamtzahl der Tabletten in StĂŒcken. Nach dem Exit-Ereignis aus der Matrix, in dem der zweite SĂŒchtige gegessen hat
54 mehr rote Tabletten als die ersten blauen, drogenabhĂ€ngigen hatten nichts mehr ĂŒbrig.
Frage: Wie viele Pillen und Greenbacks hat jeder SĂŒchtige verwendet, wenn seine Gesichter # F0FF6B bzw. #FFFEFF waren, und es ist bekannt, dass Greenback dreimal stĂ€rker ist als rote Pillen, die wiederum zweimal sind
schwÀcher als blau?
Lösung zu Problem 3ZunĂ€chst wĂ€hlen wir unter den Endwerten fĂŒr die Farben nur diejenigen aus, die streng kleiner als 0xFF sind, da wir fĂŒr den Wert 0xFF bedingt nur die untere Grenze des verwendeten FarbverstĂ€rkers angeben können. Dies sind die Werte 0xF0, 0x6B und 0xFE. Wir erhalten die folgenden Gleichungen:
r1âk=(0xF0â0x2D)=195b1â2k=(0x6Bâ0x1D)=78g2â3k=(0xFEâ0xE3)=27
oder
r1âk=195b1âk=39g2âk=9
Hier ist k der Wirkungskoeffizient von roten Pillen, col_i, col \ in \ {r, g, b \}, i \ in \ {1, 2 \} , - die Anzahl der verwendeten VerstĂ€rker (Tabletten werden in StĂŒcken gemessen, grĂŒn - in Millilitern) der entsprechenden Farbe durch den entsprechenden Verbraucher. AuĂerdem wissen wir, dass die zweite 54 mehr rote Pillen aĂ als die erste blaue, alles ist einfach:
r2=54+b1
Eine andere Gleichung ergibt sich aus der Bedingung des VerhĂ€ltnisses zwischen der Anzahl der Tabletten und den Millilitern GrĂŒn:
2â(g1+g2)=(r1+b1+r2+b2)
Wir haben auch aus dem VerhÀltnis zwischen roten und blauen Tabletten:
(r1+r2)=4(b1+b2)
AuĂerdem wissen wir, dass es mehrmals 20 ml Greenbacks gab:
(g1+g2)=20z Dabei ist z eine nicht negative ganze Zahl.
Unter der Annahme, dass k ganz ist und die Pillen ganz gegessen werden (Sie können Greenback trinken, wie Sie möchten), passt die einzige Antwort wie folgt:
r1=195g1=171b1=39
r2=93g2=9b2=33
Es kann zum Beispiel ganz einfach durch das nachstehend beschriebene Verfahren erhalten werden.
Wir haben ein VerhĂ€ltnis b1âk=39 . Die einzigen Faktorisierungen von 39 sind {1, 39}, {3, 13}. Somit kann k nur Werte aus der Menge {1, 3, 13, 39} annehmen. Versuchen wir den Wert "3".
r1=195/3=65,b1=39/3=13,g2=9/3=3,r2=54+b1=54+13=67,b2=((r1)+r2)â4·b1)/4=(65+67â4·13)/4=20,g1=((r1+b1+r2+b2)â2·g2)/2=(65+)13+67+20â2â3)/2=79/2.
Aber zur gleichen Zeit g1+g2 muss ein Vielfaches von 20 sein, was fĂŒr den Wert (79,5 + 3) nicht gilt.
Genau so werden die Werte "13" und "39" eliminiert. Der einzige Wert, der fĂŒr k ĂŒbrig bleibt, ist eins. Wenn wir es ersetzen, kommen wir nicht zu WidersprĂŒchen und bekommen eine Antwort.
Da nirgends im Problem gesagt wird, dass der lineare Inkrementkoeffizient k der roten RGB-Komponente eine ganze Zahl ist, sind die Lösungen eine ganze Familie, * selbst * wenn wir annehmen, dass GrĂŒn nur in Vielfachen von 1 ml konsumiert wird und die Tabletten in ihrer Gesamtheit konsumiert werden (was auch) nicht gesondert angegeben):
r1=1040n+195g1=732n+171b1=208n+39
r2=208n+93g2=48n+9b2=104n+33
n ist eine nicht negative ganze Zahl.
Um diese Familie zu erhalten, mĂŒssen Sie k in den ersten drei Gleichungen entfernen, indem Sie sie wie folgt umschreiben:
3r1â15b1=0,3r1â65g2=0,15b1â65g2=0,
Lösen Sie dann das System der linearen diophantinischen Gleichungen (natĂŒrlich einschlieĂlich der ĂŒbrigen auf die richtige Form reduzierten Gleichungen). Wenn wir nicht annehmen, dass GrĂŒn nur von Volumina verbraucht wird, die ein Vielfaches eines Milliliters sind, erhalten wir ein nichtlineares System diophantinischer Gleichungen, wobei g1 und g2 (die offensichtlich rational sein sollten) fĂŒr den gesamten unbekannten ZĂ€hler und Nenner verwendet werden. Wenn wir das Problem in seiner allgemeinsten Form lösen (alle Werte sind stetig), gibt es noch mehr Lösungen.
Gewinner
Zwar wurden alle Aufgaben von Alexey Ryzhikov und Valentin Shipilov gelöst. Auch Alexey Galkin, Anton Blinov, Ilya Perevozchikov und mehrere andere Teilnehmer erhielten Preise. GlĂŒckwunsch!