J'ai fait un parcours de golf avec Slack
J'espère que tu joues
Contexte / motif
- Détenu à l'origine par @fmy sur un outil de communication interne
―― Des centaines d'ingénieurs ont mené en silence une bataille de mise à jour de classement, et tout le monde était désespéré d'oublier ses tâches en attaque et en défense sur 1 octet.
- Il a été facilement remplacé par l'API Slack, alors je l'ai publié.
-J'ai également essayé de faire de la publicité dans Node Gakuen 25e période
façon de participer
Dans formulaire Google, entrez simplement l'e-mail (utilisé dans Slack) et vous recevrez les invi de Slack dans quelques minutes.
comment jouer
--Si vous vous connectez à slack, vous entrerez dans le canal général, mais comme general est l'endroit où vous souhaitez publier le classement, cliquez d'abord sur le bot ** x-code golf ** et connectez DIRECT MESSAGE (DM)
--Général Attention à ne pas jeter le code dans la pièce! Vous pouvez le voir de tout le monde!
――Les questions et discussions dans la salle générale sont également les bienvenues!
--HELP s'affiche automatiquement lorsque vous connectez DM
――Vous pouvez voir HELP autant de fois que vous le souhaitez en appuyant sur help
ou bot. Il réagit avec différentes chaînes de caractères, alors essayez-le.
-Si vous utilisez node-slack-sdk, vous pouvez le faire avec RTM_EVENTS.IM_CREATED
.
- Vous pouvez voir une liste des langues disponibles et leurs versions en tapant «v» ou «version».
- Vous pouvez voir la phrase de problème de Q1 en tapant «q 1», et vous pouvez voir la phrase de problème de Q2 en tapant «q 2».
――Lors de la résolution de la question 1 avec python, écrivez le numéro de la question + le langage comme 1 python
, commencez une nouvelle ligne et publiez le début et la fin de la réponse entre 3 guillemets simples.
--Slack l'écrira sous forme de guillemets si vous l'entourez de 3 guillemets simples (il n'y a pas de surbrillance de syntaxe)
- J'accroche 3 guillemets simples avec l'expression régulière du bot. Ignorer les sauts de ligne (les sauts de ligne dans la réponse sont comptés dans 1 octet)
- https://github.com/slack-codegolf/platform/blob/master/index.js#L171
―― Au fait, vous pouvez appuyer sur Ctrl + Entrée pour commencer une nouvelle ligne dans le champ de saisie.
- Testé côté serveur et vous avertira du succès ou de l'échec ou des octets
- Si vous réduisez le nombre d'octets aux 5 premiers ou moins, le classement sera mis à jour dans la salle générale (∗ ´꒳`) et vous pourrez le faire.
――Si vous résolvez tous les problèmes, vous serez la cible du classement général de la langue.
――Vous pouvez à tout moment vérifier le classement par problème ou par langue. Voir l'AIDE du bot.
Fonctionnalité
- Le code à publier n'est ni publié ni conservé
- Seuls le classement et le nombre d'octets sont affichés sur le canal général
«Peu importe le type de solution que vous utilisez, comme une solution scientifique.
――Après avoir montré le résultat écrasant (∗ ´꒳`) Dowa sera addictif
――La direction ne peut pas dire "Annoncer le code de la personne la mieux classée" sans autorisation.
――Pour être exact, le résultat de strace reste dans le journal d'heroku pour le moment, mais comme il s'agit d'un plan gratuit et d'un module complémentaire gratuit, la période de rétention n'est que de 7 jours.
Matière interdite
- L'acte de citer la réponse
- Contrôlé par l'autorité
- Le fait d'envoyer une réponse via le réseau
- Interruption de réseau
ifconfig $(ifconfig | fgrep encap:Ethernet | awk '{print $1}') down
- Commandes externes interdites dans toutes les langues sauf bash
--Surveillance de l'enfant PS à l'aide de strace
strace -f -e execve $COMMAND < ${INPUT}/$file
――Mais la situation actuelle est ...
- Configuration système
- En raison de la limitation que vous ne pouvez pas utiliser la commande docker dans l'application en disant "sudo de heroku n'est pas possible" ou "docker peut être utilisé!" (Ry)
――Si le nombre de personnes augmente, je vais emprunter un serveur et le faire correctement. Je veux aussi en faire Mastodon
Codegolf Tips
Nodejs
ex ascii
Veuillez sortir la chaîne de caractères suivante.
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Avec JavaScript
63 Byte
j=''
for(i=33;i<127;)j+=String.fromCharCode(i++)
console.log(j)
Node Core API
Le tampon est pratique
51 octets (peut être réduit à 43 octets)
console.log(Buffer.alloc(94,33).map((v,i)=>v+i)+"")
stdin
Vous pouvez écrire comme ci-dessous
//Si vous spécifiez le code de caractère, chaîne
s=require('fs').readFileSync('/dev/stdin','UTF8');
//Tampon si aucun code de caractère n'est spécifié
b=require('fs').readFileSync('/dev/stdin');
//L'argument peut être fd, le tampon peut être traité par carte
require('fs').readFileSync(0).map(v=>{});
//Vous pouvez le recevoir lors de l'événement(b est le tampon)
process.stdin.on('data',b=>{});
Python
J'ai fait référence à l'article suivant.
Il existe de nombreuses autres méthodes efficaces, alors lisez le DOC officiel.