logo Homepage
+  NewbieContest
|-+  Challenges» Aide Programmation» Prog - Longue vie au triangle !
Username:
Password:
Pages: [1]
  Retourner à l'épreuve    Imprimer  
Auteur Fil de discussion: Prog - Longue vie au triangle !  (Lu 5746 fois)
pixis
Administrateur

Profil challenge

Classement : 14/48811

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 651


Voir le profil WWW
« le: 21 Décembre 2016 à 20:02:19 »

Postez ici vos messages.
Journalisée

Newbie Contest Staff :
Pixis
Statut :
Administrateur
Citation :
Je bourré mieux quand je suis code
Blog :
hackndo
jfcl1

Profil challenge

Classement : 24/48811

Néophyte
*
Hors ligne Hors ligne
Messages: 29


Voir le profil WWW
« #1 le: 20 Janvier 2017 à 10:00:48 »

Salut,
Je ne comprends pas l'exemple donné :
Exemple:
Chemin = SSSEEE
CRC = 0x181c307118953949

-> bb 57 50
16 bd f8 de
1a e3 0f 99
65 3b 38 []

pour SSSEEE, je trouve
crc64("0x161a653b38") => 0x3db12a93
ou
crc64("161a653b38") => 0xdd174280

Mais pas la valeur donnée en exemple ?
Où est l'erreur ?
Journalisée
S0410N3
Administrateur

Profil challenge

Classement : 4/48811

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1258


Voir le profil WWW
« #2 le: 20 Janvier 2017 à 10:44:07 »

A vue de nez, on dirait bien que tu fais tourner le truc en php 32bits et non pas en 64
De plus ça serait plutôt :

crc64(chr(0x16).chr(0x1a).chr(0x65).chr(0x3b).chr(0x38))

Je viens de vérifier ça donne bien 0x181c307118953949

Par contre exécuté sur du 32bits, ça donne : 0x2157eb17
Journalisée

Enjoy (copyleft de quelqu'un qui a trop parlé)

S0410N3

-------------------------------------------------------------------------------------
La folie est le prix à payer pour le temps passé à être trop lucide.
-------------------------------------------------------------------------------------
http://forum.hardware.fr/hfr/Discussions/Societe/francais-repere-repaire-sujet_19265_1.htm
pixis
Administrateur

Profil challenge

Classement : 14/48811

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 651


Voir le profil WWW
« #3 le: 20 Janvier 2017 à 11:27:47 »

Je confirme, l'erreur vient de ton côté.

Le fait de mettre cet exemple permet de lever les ambiguïtés sur le calcul du CRC afin d'être certain que tout le monde a la bonne fonction. Bon courage (que je m'auto-souhaite également, en passant)
Journalisée

Newbie Contest Staff :
Pixis
Statut :
Administrateur
Citation :
Je bourré mieux quand je suis code
Blog :
hackndo
harvey

Profil challenge

Classement : 5/48811

Membre Senior
****
Hors ligne Hors ligne
Messages: 315


Voir le profil WWW
« #4 le: 23 Janvier 2017 à 21:27:19 »

À tout hasard, le code de la fonction utilisée est donné par le script de l'épreuve (pas l'énoncé).
Elle est inspirée d'un commentaire sur une page du manuel php, qui en donne une version optimisée:
http://www.php.net/manual/fr/function.crc32.php#111699

Je n'ai pas été voir ce que ça donne sur une machine 32 bits, mais je suis d'accord avec S0410N3 que ça risque de ne pas trop marcher...
Voici une version en python qui fait la même chose, sans le souci de la taille des entiers:
Code:
def crc64(s):
    poly = 0xC96C5795D7870F42
    crc=0
    for c in map(ord,s):
        for b in range(8):
            if (crc^c) & 1:
                _poly = poly
            else:
                _poly = 0
            crc = (crc>>1) ^ _poly
            c >>= 1
    return crc
« Dernière édition: 23 Janvier 2017 à 21:32:50 par harvey » Journalisée

L'entropie vient en mangeant.
harvey

Profil challenge

Classement : 5/48811

Membre Senior
****
Hors ligne Hors ligne
Messages: 315


Voir le profil WWW
« #5 le: 12 Mars 2017 à 20:41:57 »

Et comme j'ai donné cette indication en privé plusieurs fois je la redonne ici :
les tableaux sont générés entièrement au hasard.
Ça implique qu'il y a une probabilité (astronomiquement faible) que vous receviez un énoncé non-solvable. Vous aurez plus de chances de trouver une grille de loto gagnante en fouillant les poubelles de Pyongyang.
« Dernière édition: 12 Mars 2017 à 23:27:32 par harvey » Journalisée

L'entropie vient en mangeant.
dadacode

Profil challenge

Classement : 187/48811

Néophyte
*
Hors ligne Hors ligne
Messages: 1


Voir le profil
« #6 le: 24 Mai 2018 à 23:14:27 »

Pas évidente !
Je pensais juste essayer l'ensemble des parcours mais ca en fait beaucoup trop ...

je poste le code java pour la fonction CRC64

Code: (java)

private final static long poly = ((long) 0xC96C5795D7870F42L);

public long crc64(String string) {
long crc = 0;
for (int i = 0; i < string.length(); i++) {
long c = (int) string.charAt(i);
for (long bit = 0; bit < 8; bit++) {
if (((crc ^ c) & 0x0000000000000001L) == 1)
crc = (crc >>> 1 & 0xFFFFFFFFFFFFFFFFL) ^ poly & 0xFFFFFFFFFFFFFFFFL;
else
crc = (crc >>> 1 & 0xFFFFFFFFFFFFFFFFL);

c = (c >>> 1) & 0xFFFFFFFFFFFFFFFFL;
}
}
return crc;
}
Journalisée
sirk390
Beta testeur

Profil challenge

Classement : 2/48811

Membre Junior
*
Hors ligne Hors ligne
Messages: 77


Voir le profil
« #7 le: 09 Décembre 2018 à 21:55:52 »

Le CRC n'est pas tout à fait standard d'après ce que j'ai compris.
Il s'agirait d'une variante de CRC64-ECMA-182 avec "reflected bytes" et "reflected output" mais sans initilisation ou xor final à 0xffffffffffffffff

Il faudrait lui donner les paramètres suivants dans le catalogue ici: http://reveng.sourceforge.net/crc-catalogue/17plus.htm#crc.cat-bits.64:
   width=64 poly=0x42f0e1eba9ea3693 init=0x0000000000000000 refin=true refout=true xorout=0x0000000000000000 check=0x2b9c7ee4e2780c8a residue=0x0000000000000000

Journalisée
darkanonymous
Profil challenge

Classement : 23191/48811

Néophyte
*
Hors ligne Hors ligne
Messages: 5


Voir le profil
« #8 le: 13 Avril 2019 à 13:35:32 »

Hello,

J'ai le même souci, le CRC donné en exemple ne me donne pas la même valeur avec la chaine d'entrée

Code PHP
Code:
function crc64($string)
{
    $poly = (0xC96C5795 << 32) | 0xD7870F42;
    $crc = 0;
    for($i=0;$i<strlen($string);$i++)
    {
        $byte = ord($string[$i]);
        for($bit=0;$bit<8;$bit++,$byte>>=1)
        {
            $crc = (($crc>>1)& ~(1<<63)) ^ ((($crc^$byte)&1)?$poly:0);
        }
    }
    return $crc;
}

Code C
Code:
unsigned long long int crc64( const char* s )
{
    unsigned long long int poly = 0xc96c5795d7870f42ULL;//(0xC96C5795ULL << 32) | 0xD7870F42ULL;
    unsigned long long int crc  = 0;
    for ( size_t i=0 ; i< strlen(s) ; i++ )
    {
        unsigned long long int byte = s[i];
        for ( size_t bit=0 ; bit<8 ; bit++, byte>>=1 )
            crc = ((crc>>1) & 0x7fffffffffffffffULL) ^ ( ((crc^byte)&1)?poly:0 );
    }
    return crc;
}


Code:
int main()
{
    printf("\n CRC = %016llx", crc64("161a653b38"));
    return 0;
}

Néanmoins la fonction C me retourne CRC = 0x46c4478f73cd3b20 au lieu de 0x181c307118953949.
Comprends pas
« Dernière édition: 13 Avril 2019 à 14:50:46 par darkanonymous » Journalisée
harvey

Profil challenge

Classement : 5/48811

Membre Senior
****
Hors ligne Hors ligne
Messages: 315


Voir le profil WWW
« #9 le: 18 Avril 2019 à 15:48:37 »

Les deux codes sont bons, mais tu as donné la représentation hexadécimale en entrée à la fonction C.

Le calcul doit se faire sur les octets (donc crc64("\x16\x1a\x65\x3b\x38") ou utiliser une fonction pour la conversion).
Journalisée

L'entropie vient en mangeant.
darkanonymous
Profil challenge

Classement : 23191/48811

Néophyte
*
Hors ligne Hors ligne
Messages: 5


Voir le profil
« #10 le: 18 Avril 2019 à 21:14:31 »

AHAHAHA,

Merci
J'ai trop le seum xD
Reste plus qu'à !
Journalisée
harvey

Profil challenge

Classement : 5/48811

Membre Senior
****
Hors ligne Hors ligne
Messages: 315


Voir le profil WWW
« #11 le: 21 Avril 2019 à 22:52:07 »

De rien, bon courage !
Et maintenant que j'y pense, à cause de strlen la fonction va donner un mauvais résultat si l'entrée contient un octet nul...
Journalisée

L'entropie vient en mangeant.
dsancho

Profil challenge

Classement : 708/48811

Néophyte
*
Hors ligne Hors ligne
Messages: 12


Voir le profil
« #12 le: 13 Septembre 2019 à 08:35:37 »

Bonjour,

Je suis un peu sec sur cette épreuve qui me turlupine. "Longue vie au triangle"... de pascal ?
Un petit indice svp ?

Merci !
Journalisée
sirk390
Beta testeur

Profil challenge

Classement : 2/48811

Membre Junior
*
Hors ligne Hors ligne
Messages: 77


Voir le profil
« #13 le: 18 Septembre 2019 à 22:08:16 »

Salut dsancho, passe plutôt sur discord, comme ça tu peux expliquer à quelqu'un ce que tu as déjà essayé.
Sache que c'est une des épreuves les plus difficile du site, donc c'est normal si tu bloques pendant des jours ou même des semaines...
Journalisée
dsancho

Profil challenge

Classement : 708/48811

Néophyte
*
Hors ligne Hors ligne
Messages: 12


Voir le profil
« #14 le: 19 Septembre 2019 à 09:51:31 »

Ok. Je vais faire un tour sur discord !
Merci
Journalisée
Pages: [1]
  Retourner à l'épreuve    Imprimer  
 
Aller à: