Gegebene Liste von ganzen Zahlen {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}
. Für Interessenten werden diese Zahlen in der Wochentagsberechnung verwendet.
Wochentag = (m[n] + d + y + y>>2 + y/400 - y/100) % 7;
, wo m[n]
- Ausdruck ich suche, d
- Tag des Monats, y
- year - (month <= 2)
.
Konstruieren Sie einen Ausdruck, der aus arithmetischen, logischen und bitweisen Operatoren besteht, die für eine positive ganze n
Zahl ausgegeben werden, m
sodass die m % 7
n-te Zahl in der Liste entspricht.
Verzweigungen, ternäre Operatoren, Tabellensuchen und Zeiger sind nicht zulässig.
Punktzahl:
1 - für | & ^ ~ >> <<
Bediener
1.1 - für + - < > <= >= == != ! && ||
Bediener
1.2 - für *
Bediener
1.4 - für / %
Bediener
Antwort mit der niedrigsten Punktzahl gewinnt.
Persönlich habe ich gefunden:
(41*n)>>4+((n+61)>>4)<<2
mit Punktzahl 6.4. Ich dachte, dass es schwierig sein wird, einen eigenen Ausdruck zu finden.
quelle
table lookups
Interessante Formulierungen, nehme ich an ...Antworten:
2
2.2Ich liebe willkürliche Präzisionsarithmetik.
Oder, wenn du kein Hex magst,
Prüfung:
quelle
4*n
stattdessen eine Nachschlagetabelle mit erstellen und 0,2 Punkte sparen, indem Sie sie als schreibenn<<2
?7
. Mein bester Kandidat der Integer Floor Divisionconst/n
stößt auf einen Widerspruch mitn=4
undn=8
.const%n
das alles außer n = 1,2 und 3 erfüllen könnte.2,0
oder (Punktzahl 2.2):
Alles mit roher Gewalt gefunden :-)
quelle
for
, indem ich alle Werte p, q für die Formel getestet habe(p >> i) ^ q
, dann einen Kaffee getrunken habe und 10 Minuten später gekommen bin , um die Ergebnisse zu lesen.35.3
Ich vermute, dass dies die am wenigsten effiziente Methode ist, um die Liste zu erstellen:
Ich habe gerade die polynomiale Regression berechnet. Ich bin versucht zu sehen, welche andere schreckliche Methode versucht werden könnte.
Insbesondere könnte ich 3,3 Punkte sparen, wenn das Ergebnis gerundet wäre. An diesem Punkt denke ich nicht, dass das wichtig ist.
quelle
3.2
Nullbasierte Lösung:
Einseitige Lösung:
Ich dachte zunächst, dass die
%7
Operation mitgezählt würde und%
sie hier teuer ist, habe ich versucht, sie ohne sie zu lösen.Ich kam zu einem Ergebnis von 3.2 wie folgt:
Ich würde mich für Optimierungen mit diesem Ansatz interessieren (ohne
%
). Vielen Dank.quelle
(0426415305230 >> (i*3)) & 7
? Sie können die Ausgabestellen in umgekehrter Reihenfolge sehen.Python (3)
Da es heutzutage einige dieser Fragen gibt, habe ich beschlossen, ein Programm zu erstellen, um sie automatisch in 3 (oder 2) Token zu lösen. Hier ist das Ergebnis für diese Herausforderung:
Beweis, dass dies funktioniert:
quelle
&
.