Générez-moi une puce QFP!
QFP est un type de facteur de forme pour un composant électrique où les broches sortent des côtés d'une puce. Voici une image d'un composant QFP typique:
vous pouvez voir que la formule générale est d'avoir 4 côtés d'un nombre égal de broches.
Votre défi est de créer un programme qui accepte un nombre entier, qui représente le nombre de broches d'un côté, et crée un composant ASCII QFP avec des broches numérotées.
Contribution:
un seul entier qui représente le nombre de broches d'un côté
Sortie:
Une puce ASCII QFP avec un brochage approprié.
Exemple:
entrée: 1
4 ┌┴┐ 1┤ ├3 └┬┘ 2
entrée: 2
87 ┌┴┴┐ 1┤ ├6 2┤ ├5 └┬┬┘ 34
entrée: 12
444444444333 876543210987 ┌┴┴┴┴┴┴┴┴┴┴┴┴┐ 1┤ ├36 2┤ ├35 3┤ ├34 4┤ ├33 5┤ ├32 6┤ ├31 7┤ ├30 8┤ ├29 9┤ ├28 10┤ ├27 11┤ ├26 12┤ ├25 └┬┬┬┬┬┬┬┬┬┬┬┬┘ 111111122222 345678901234
Règles:
- toutes les puces QFP doivent être enfermées et scellées ainsi que ascii fournit. l'espacement est de la plus haute importance. La poussière à l'intérieur d'un microprocesseur est une mauvaise chose!
- la numérotation des broches doit être effectuée comme dans les exemples (lire de gauche à droite, de haut en bas, numéroté dans le sens antihoraire)
- Vous pouvez commencer la numérotation à 0, mais cela ne doit pas affecter la puce (une entrée de 12 a encore besoin de 12 broches par côté)
- Les seuls caractères valides dans votre sortie sont les
1,2,3,4,5,6,7,8,9,0,┌,┴,┐,├,┘,┬,└,┤
espaces et les retours à la ligne. - tous les encodages pour les langues sont autorisés, mais votre sortie DOIT être conforme aux règles ci-dessus.
Il s'agit d'un codegolf, et en tant que tel, le code avec le moins d'octets gagne! Bonne chance!
Réponses:
Mathematica, 271 octets
Fonction anonyme. Prend un nombre en entrée et renvoie une chaîne en sortie. Le caractère Unicode sans dessin de boîte est U + F3C7 (usage privé) pour
\[Transpose]
.la source
Kotlin ,
397393 octetsLambda sans nom.
Vous pouvez l'essayer ici , mais vous devrez coller la source en vous-même car l'éditeur ne semble pas enregistrer les programmes en encodage UTF-8. La version non golfée est un programme complet, vous devriez donc pouvoir l'utiliser dans son intégralité.
Golfé
(Sorte de) Non golfée
Enregistré un tas d'octets en surchargeant l'
%
opérateur et en l'utilisant pour imprimer. J'y reviendrai probablement plus tard - je pense que je peux économiser pas mal d'octets si j'utilisemod
ou un autre opérateur comme fonction de concaténation. Plus d'interpolation et moins d'appels imprimés.la source
Python 2,
352343331 octetsEssayez-le ici. Notez que le fichier doit commencer par la nomenclature UTF-8
\xef\xbb\xbf
pour que les littéraux unicode fonctionnent dans l'interpréteur CPython standard. Ces 3 octets sont comptés ici par rapport à la taille.repl.it
utilise déjà unicode donc le lien a juste le code affiché ici.Merci @tuskiomi pour l'idée d'encodage qui a sauvé
921 octets.Partiellement non golfé:
la source
# -*- coding: utf-8 -*-
plus une nouvelle ligne vers le haut pour que l'interprète l'accepte. L'encodage UTF-8 de chacun de ces caractères est de 3 octets, donc ce n'était pas suffisant pour payer le coût de la directive d'encodage. Cependant, je viens de vérifier PEP 263 et je peux m'en tirer avec juste#coding=utf-8
et une nouvelle ligne afin qu'il économise quelques octets.JavaScript (ES6),
295284 octets (268 caractères), non concurrentCe code ne prend pas en charge les numéros de broches supérieurs à 99 et ne peut donc probablement pas être considéré comme une entrée entièrement valide. C'est pourquoi je le marque comme non compétitif pour l'instant.
Il pourrait être facilement modifié pour prendre en charge un nombre arbitraire de broches en utilisant des marges statiques plus larges autour de la puce. Cependant, cela peut également enfreindre les règles (je n'en suis pas sûr). Des marges entièrement dynamiques coûteraient beaucoup plus d'octets.
Démo
Afficher l'extrait de code
la source
Java 11,
451425393 octets-26 octets grâce à @ceilingcat .
Explication:
Essayez-le en ligne.
la source