⬅ Retour à Challenges · 🏠 Accueil du repo
Low Logic — Hardware (Very Easy)¶
| Catégorie | Hardware |
| Difficulté | Very Easy |
| Récompense | 130 XP |
Scénario¶
I have this simple chip, I want you to understand how it's works and then give me the output.
Fichiers fournis :
- chip.jpg → schéma du circuit
- input.csv → les entrées à tester
Étape 1 — Extraire les fichiers¶
Étape 2 — Ouvrir l’image du circuit¶
Tu obtiens ce schéma :

Étape 3 — Comprendre le circuit (explication débutant)¶
Le circuit utilise des transistors NPN.
Un transistor NPN fonctionne comme un interrupteur :
- Si on met 1 sur sa base → il laisse passer le courant
- Si on met 0 → il bloque le courant
Ce qu’on voit sur le schéma :¶
Partie haute (IN0 et IN1)
Deux transistors sont branchés l’un après l’autre (en série).
→ Le courant ne passe que si les deux sont à 1.
→ C’est un ET logique (AND) :
Partie basse (IN2 et IN3)
Pareil, deux transistors en série.
→ Autre AND :
Ensuite
Les deux résultats A et B sont reliés en parallèle vers la LED (OUT0).
→ Dès qu’au moins un des deux (A ou B) est à 1, la LED s’allume.
→ C’est un OU logique (OR) :
Formule finale¶
Étape 4 — Regarder le fichier d’entrée¶
Tu verras :
Chaque ligne = une combinaison de 4 bits à tester.
Étape 5 — Calculer la sortie avec un script Python¶
Crée un fichier solve.py :
import csv
bits = []
with open("input.csv") as f:
reader = csv.reader(f)
next(reader) # on saute la première ligne (le header)
for row in reader:
in0 = int(row[0])
in1 = int(row[1])
in2 = int(row[2])
in3 = int(row[3])
# On applique la logique du circuit
out = (in0 and in1) or (in2 and in3)
bits.append(str(int(out))) # on met 0 ou 1 en texte
# On a maintenant une longue chaîne de 0 et 1
binary = "".join(bits)
print("Binaire :", binary)
# On convertit tous les 8 bits en caractères ASCII
flag = ""
for i in range(0, len(binary), 8):
octet = binary[i:i+8]
if len(octet) == 8:
flag += chr(int(octet, 2))
print("Flag :", flag)
Lance le script :
Étape 6 — Flag¶
Résumé ultra-simple¶
- Ouvre l’image → comprends que c’est
(IN0 ∧ IN1) ∨ (IN2 ∧ IN3) - Lis le CSV ligne par ligne
- Calcule le bit de sortie pour chaque ligne
- Regroupe les bits par 8 → convertis en lettres
- Tu obtiens le flag
C’est tout !