En informatique, en utilisant le chiffre 4 exactement quatre fois, et deux signes exactement et deux opérations + exactement comment obtenir 10?

a marqué ce sujet comme résolu.

Bonjour à tous et à toutes,

En informatique, en utilisant le chiffre 4 exactement quatre fois, et deux signes exactement et deux opérations + exactement comment obtenir 10? Voici la solution:

Soit la fonction 4 (x) telle que :

4 (4) = 2 pour x = 4. 4 (8) = 6 pour x = 8. 4 (12) =10 pour x = 12.

Nous avons 3 solutions :

4 (4) +4+ 4 = 10 4 (4+ 4) + 4 = 10 4 (4 +4 +4) = 10

Il y a exactement quatre 4 et exactement deux signes et exactement deux additions, et c’est programmable par ordinateur si on supprime l’interdiction de visibilité du code, imposer par le compilateur pour ne pas avoir un nom de fonction tel que 4() , ou changer() par d’autres signes.

Comment profiter et utiliser cette découverte?

Comment profiter et utiliser cette découverte?

extrazlove

C’est plutôt à toi de nous le dire, pourquoi t’es-tu posé cette problématique ?

Par ailleurs, à mon appréciation, tu n’utilises pas 4 en tant que chiffre, mais en tant que symbole, mais la validité de ce move dépend complètement du problème que tu essaies de résoudre et tu ne nous le donnes pas

+4 -0

En informatique, en utilisant le chiffre 4 exactement quatre fois, et deux signes exactement et deux opérations + exactement comment obtenir 10?

(4+4+4)4=10(4 + 4 + 4)− \sqrt{4} = 10

  • il y a quatre 44 ;
  • deux opérations sont utilisées : - et ++ ;
  • le signe ++ est utilisé deux fois.

J’ai trouvé la solution ici : https://en.wikipedia.org/wiki/Four_fours#Solutions

+1 -0

Comment profiter et utiliser cette découverte?

extrazlove

C’est plutôt à toi de nous le dire, pourquoi t’es-tu posé cette problématique ?

Par ailleurs, à mon appréciation, tu n’utilises pas 4 en tant que chiffre, mais en tant que symbole, mais la validité de ce move dépend complètement du problème que tu essaies de résoudre et tu ne nous le donnes pas

romantik

Je viens de voir ce problème sur internet, je pense qu’on peut utiliser cette approche pour faciliter le calcul sur les calculateurs, en utilisant juste l’opération + et moins de symboles possibles. En tous cas en informatique tous le programme est une chaine de caractère, en mathématique c’est normal de ne pas pouvoir faire la différence entre 4() et 4 mais en informatique si…

@sgble le mot exactement veux dire qu’il n’y a que deux operations + la vous utilisez aussi l’opération -.

+0 -0

Mais tu tords les notations un peu comme tu l’entends, et la définition de la fonction devrait faire partie de la solution.

Sinon je peux dire que dans un certain contexte, la code suivant répond à la problématique :

>>> 44 + 4 + 4
10

Le « certain contexte » étant

import ctypes
ctypes.c_int.from_address(id(52) + 24).value = 10

Comment profiter et utiliser cette découverte?

En tous cas en informatique tous le programme est une chaine de caractère, en mathématique c’est normal de ne pas pouvoir faire la différence entre 4() et 4 mais en informatique si…

extrazlove

Je ne comprends pas ce que tu veux dire ?

+1 -0

Mais tu tords les notations un peu comme tu l’entends, et la définition de la fonction devrait faire partie de la solution.

Sinon je peux dire que dans un certain contexte, la code suivant répond à la problématique :

>>> 44 + 4 + 4
10

Le « certain contexte » étant

import ctypes
ctypes.c_int.from_address(id(52) + 24).value = 10

Comment profiter et utiliser cette découverte?

entwanne

Même en mathématiques, quand je fais 1 + 1 = 2, je fais appel aux axiomes du peano externes pour dire que c’est vrai. Et pareille en informatique quand j’écris 1 + 1 = 2 les nombres 1, 2 j’appelle des fonctions et circuits électroniques externes pour faire ce calcul.

44 n’est pas un chiffre mais un nombre.

Même en mathématiques, quand je fais 1 + 1 = 2, je fais appel aux axiomes du peano externes pour dire que c’est vrai. Et pareille en informatique quand j’écris 1 + 1 = 2 les nombres 1, 2 j’appelle des fonctions et circuits électroniques externes pour faire ce calcul.

extrazlove

Oui et quand tu fais 4(4)4(4) c’est perçu comme un 4×44 \times 4, pas comme (xx2)(4)(x \rightarrow x-2)(4)

44 n’est pas un chiffre mais un nombre.

extrazlove

44 est un nombre composé de deux chiffres 4, tout comme 4 est un nombre composé d’un chiffre 4.

@entwanne Oui 4(4)=16 juste en mathématique mais en informatique 4(4) est une fonction, ca ne marche pas juste car on a programmé le compilateur pour ne pas permettre de déclarer ce genre de fonction pour une visibilité de code, rien n’interdit d’enlever cette interdiction…

44 c’est un nombre il faut plus de bit pour l’enregistrer pas comme le chiffre 4, en tous cas votre compilateur il ne va pas lire que 44 est composé de deux chiffres mais un nombre.

+0 -0

4 aussi est un nombre, et ne sera généralement pas stocké sur moins de bits que 44 (8 bits à la louche).

Usuellement la distinction qui est faite est entre caractères et nombres, l’ordinateur n’a pas vraiment la notion de chiffres (qui ne sont que des caractères avec une correspondance particulière vers des nombres, définie par leur base).
Et même les caractères sont juste des nombres avec une table de correspondance.

Le compilateur ne va faire aucune distinction entre 4 et 44, les deux sont des nombres.

Et pareille en informatique quand j’écris 1 + 1 = 2 les nombres 1, 2 j’appelle des fonctions et circuits électroniques externes pour faire ce calcul.

extrazlove

non, dans le fonctionnement actuel des ordinateurs, 1 et 2 ne sont pas des fonctions, ils ont une représentation numérique composé de bits (0 ou 1) car un bit peut être facilement implémenté sur un circuit par une charge électrique présente ou non. et selon la représentation que tu utilises, qu’on appelle "type" dans plusieurs langages de programmation, tu as ta séquence de bits définie pour cette valeur, il n’y a pas une fonction "1", une fonction "2" etc… ce sont des valeurs c’tout. (après y’a des abstractions comme celle qu’a mis en avant entwanne mais c’est lié au fonctionnement du langage, pas aux représentations machines)

Sur une architecture classique de calculateur les entrées sont les deux opérandes et l’opération à réaliser. Si je comprends ta suggestion, c’est de n’avoir en entrée qu’une séquence de "4" (qui peut donc être représenté par un bit, voire présumé, et d’opérations à réaliser entre eux. Admettons que ça te permette de supprimer les opérandes, tu vas avoir une séquence d’opération très longue à réaliser pour simplement une valeur, et c’est ça qui prend du temps ! D’autant que pour représenter les nombre selon ta représentation en séquence d’opération, les circuits risquent d’être sacrément complexe !

S’il s’agit bien du même problème qu’sgble a trouvé sur wikipedia, ce n’est qu’un jeu de mathématicien, ça n’a aucun intérêt applicatif.

+0 -0

44 c’est un nombre il faut plus de bit pour l’enregistrer pas comme le chiffre 4, en tous cas votre compilateur il ne va pas lire que 44 est composé de deux chiffres mais un nombre.

extrazlove

Si je compte en base 45 (ou au delà), je peux représenter aussi bien 4 que 44 avec un seul chiffre (symbole). Le système de numération reste finalement assez conventionnel.

44 c’est un nombre il faut plus de bit pour l’enregistrer pas comme le chiffre 4, en tous cas votre compilateur il ne va pas lire que 44 est composé de deux chiffres mais un nombre.

Même s’il est vrai qu’il faut 3 bits pour représenter 44 contre 6 bit pour 4444, cela ne change pas grand chose dans la pratique. 44 et 4 tiennent tous les deux sur un octet de 8 bits, qui est l’unité de base minimale sur les architectures modernes. Dans un cas comme dans l’autre, il faut donc au moins 8 bits pour représenter 4 et 44.

+0 -0

@entwanne: Juste pour être sûr. Le 24 correspond à un décalage de bytes ? Si tu n’avais pas fait le +24 tu écrirais à un endroit autre dans la structure ?

+0 -0

Imaginer que je veux calculer 100*100 Dans mon example, soit 1 valeur (4), soit 1 addition (4 + 4), soit 2 additions (4 + 4 + 4) Dans le cas classique, cela va faire à peu près 5050 cas à gérer

employé: Et boss, il faut gérer 5050 cas c’est chaud boss: mais non, il y a le stagiaire. Et il y a aussi Jean-Louis de la compta. Depuis qu’il fait des scripts Excel, il veut devenir développeur. employé: Okay boss

+0 -0

Imaginer que je veux calculer 100*100 Dans mon example, soit 1 valeur (4), soit 1 addition (4 + 4), soit 2 additions (4 + 4 + 4) Dans le cas classique, cela va faire à peu près 5050 cas à gérer

employé: Et boss, il faut gérer 5050 cas c’est chaud boss: mais non, il y a le stagiaire. Et il y a aussi Jean-Louis de la compta. Depuis qu’il fait des scripts Excel, il veut devenir développeur. employé: Okay boss

extrazlove

Je n’ai absolument rien compris à ce que tu voulais dire par là :/

+7 -0

Justement, la traduction dans l’alphabet comportant seulement 6 caractères résulte en un code qui comporte bien plus de caractères. Et l’auteur dit lui-même dans son avant-propos "Si le défi ne présente pas d’intérêt en soi, […]"
Il s’agit du JSFuck, le seul potentiel intérêt est l’obfuscation de code, dont l’intérêt est aussi à discuter …

On a aucun intérêt à chercher à utiliser moins de caractères dans un code source, le but d’un langage de programmation est de laisser le programmeur s’exprimer et être facilement compréhensible, diminuer les caractères disponibles va à l’encontre de ces deux buts.

+1 -0

Le code source n’est jamais compressé, je ne vois pas ce que ça apporterait. Par ailleurs, c’est ici un cas précis sans aucun sens (aucune utilité, aucune possibilité de le généraliser à sur un code), et tu négliges toujours le coût de la déclaration des fonctions.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte