Ich habe mit Slack einen Golfplatz gemacht
Ich hoffe du spielst
Hintergrund / Motiv
- Ursprünglich von @fmy auf einem internen Kommunikationstool gehalten
―― Hunderte von Ingenieuren führten stillschweigend einen Ranglisten-Update-Kampf durch, und jeder wollte unbedingt seine Pflichten in Angriff und Verteidigung über 1 Byte vergessen.
- Es wurde leicht durch die Slack-API ersetzt, also habe ich es veröffentlicht.
-Ich habe auch versucht, in [Node Gakuen 25. Periode] zu werben (https://nodejs.connpass.com/event/54749/presentation/)
Weg zur Teilnahme
Geben Sie in Google-Formular einfach die E-Mail (in Slack verwendet) ein und Sie erhalten in wenigen Minuten eine Einladung von Slack.
Spielanleitung
- Wenn Sie sich bei slack anmelden, gelangen Sie in den allgemeinen Kanal. Da jedoch general der Ort ist, an dem Sie das Ranking veröffentlichen möchten, klicken Sie zuerst auf den Bot ** x-codegolf ** und verbinden Sie DIRECT MESSAGE (DM).
--Allgemein Achten Sie darauf, den Code nicht in den Raum zu werfen! Sie können es von jedem sehen!
――Fragen und Chats im allgemeinen Raum sind ebenfalls willkommen!
--HELP wird automatisch angezeigt, wenn Sie DM anschließen
――Sie können HILFE so oft sehen, wie Sie möchten, indem Sie auf "Hilfe" oder "Bot" klicken. Es reagiert mit verschiedenen Zeichenketten, probieren Sie es aus.
-Wenn Sie node-slack-sdk verwenden, können Sie dies mit
RTM_EVENTS.IM_CREATED
tun.
- Sie können eine Liste der verfügbaren Sprachen und ihrer Versionen anzeigen, indem Sie "v" oder "version" eingeben.
- Sie können den Problemsatz von Q1 sehen, indem Sie "q 1" eingeben, und Sie können den Problemsatz von Q2 sehen, indem Sie "q 2" eingeben
――Wenn Sie Frage 1 mit Python lösen, schreiben Sie die Fragennummer + Sprache als "1 Python", beginnen Sie eine neue Zeile und setzen Sie den Anfang und das Ende der Antwort in 3 einfache Anführungszeichen.
--Slack schreibt es als Anführungszeichen, wenn Sie es in 3 einfache Anführungszeichen setzen (es gibt keine Syntaxhervorhebung).
- Ich verknüpfe 3 einfache Anführungszeichen mit dem regulären Ausdruck des Bots. Zeilenumbrüche ignorieren (Zeilenumbrüche in der Antwort werden in 1 Byte gezählt)
- https://github.com/slack-codegolf/platform/blob/master/index.js#L171
―― Übrigens können Sie Strg + Eingabetaste drücken, um eine neue Zeile im Eingabefeld zu beginnen.
- Auf der Serverseite getestet und benachrichtigt Sie über Erfolg oder Misserfolg oder Bytes
- Wenn Sie die Anzahl der Bytes auf die Top 5 oder weniger reduzieren, wird die Rangfolge im allgemeinen Raum (∗ ´꒳`) aktualisiert und Sie können dies tun.
――Wenn Sie alle Probleme lösen, werden Sie zum Ziel des Gesamtrankings der Sprache.
――Sie können das Ranking jederzeit nach Problem oder Sprache überprüfen. Siehe Bots HILFE.
Charakteristisch
- Der zu veröffentlichende Code wird nicht veröffentlicht oder beibehalten
- Auf dem allgemeinen Kanal werden nur Rangfolge und Anzahl der Bytes angezeigt
――Es spielt keine Rolle, welche Art von Lösung Sie verwenden, z. B. eine wissenschaftliche Lösung.
――Nach dem überwältigenden Ergebnis (∗ ´꒳`) macht Dowa süchtig
――Das Management kann nicht ohne Erlaubnis sagen: "Den Code der Person mit dem höchsten Rang bekannt geben".
――Um genau zu sein, bleibt das Ergebnis der Strace derzeit in Herokus Protokoll, aber da es sich um einen kostenlosen Plan und ein kostenloses Add-On handelt, beträgt die Aufbewahrungsfrist nur 7 Tage.
Verbotene Angelegenheit
- Der Akt des Zitierens der Antwort
- Von der Behörde kontrolliert
- Das Senden einer Antwort über das Netzwerk
- Netzwerkunterbrechung
ifconfig $(ifconfig | fgrep encap:Ethernet | awk '{print $1}') down
- Externe Befehle in allen Sprachen außer Bash verboten
--Kinder ps Überwachung mit strace
strace -f -e execve $COMMAND < ${INPUT}/$file
――Aber die aktuelle Situation ist ...
- Systemkonfiguration
- Aufgrund der Einschränkung, dass der Docker-Befehl nicht in der App verwendet werden kann, während "Herokus Sudo ist nicht möglich" oder "Docker kann verwendet werden!" (Ry)
――Wenn die Anzahl der Personen steigt, leihe ich mir einen Server aus und mache es richtig. Ich möchte es auch Mastodon machen
Codegolf Tips
Nodejs
ex ascii
Bitte geben Sie die folgende Zeichenkette aus.
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Mit JavaScript
63 Byte
j=''
for(i=33;i<127;)j+=String.fromCharCode(i++)
console.log(j)
Node Core API
Puffer ist bequem
51 Byte (kann auf 43 Byte reduziert werden)
console.log(Buffer.alloc(94,33).map((v,i)=>v+i)+"")
stdin
Sie können wie folgt schreiben
//Wenn Sie den Zeichencode angeben, Zeichenfolge
s=require('fs').readFileSync('/dev/stdin','UTF8');
//Puffer, wenn kein Zeichencode angegeben ist
b=require('fs').readFileSync('/dev/stdin');
//Argument kann fd sein, Puffer kann mapverarbeitet werden
require('fs').readFileSync(0).map(v=>{});
//Sie können es bei der Veranstaltung erhalten(b ist Puffer)
process.stdin.on('data',b=>{});
Python
Ich habe auf den folgenden Artikel verwiesen.
Es gibt viele andere effektive Methoden, lesen Sie also das offizielle DOC.