France IOI: Qui a été sélectionné pour le stage du 6 au 12 juillet ?

Ouais mais la communauté Xubuntu est très inactive et je n'ai pas trouvé de version supérieure à la 10.04 pour PowerPC.
Lubuntu est censé être encore plus léger. Donc tant mieux. Parce que l'ordinateur rame quand même un peu.
Je pouvais aussi passer de Xubuntu 10.04 à 12.04 par mises à jour, mais le passage de Linux 2 à 3 (un truc comme ça) causait un bogue que je n'arrivais pas à réparer.

Principe de Xubuntu : on part d'Ubuntu, et on l'allège au maximum. Xfce.
Principe de Lubuntu : on part de zéro, et on ajoute le minimum. LXDE.

Ah ? Elles ne sont pas bien, les nouvelles versions ?
C'est vrai que je crois que 10.04 était plus léger et ramait moins.

l'écran était cassé.
et j'utilise Archlinux dessus, et je le branche à un écran lorsque j'en ai besoin.

je ne pense pas que ce soit un problème d'avoir un système obsolète vu comment l'ordi est obsolète au pire tu compiles les programmes ;)

Le problème avec les nouvelles version d'Ubuntu (> 10.04) c'est que les nouveaux kernels bug beaucoup.
Mon (enfin celui de mon Père) PC Portable ne boot pas, à cause de l'APIC, il fallait modifier deux-trois truc du kernel dans le code.

> Principe de Xubuntu : on part d'Ubuntu, et on l'allège au maximum. Xfce.
> Principe de Lubuntu : on part de zéro, et on ajoute le minimum. LXDE.

Principe d'Archlinux : On part de *vraiment* zéro, et on installe le minimum (i.e. X et un WM au choix).

> Le problème avec les nouvelles version d'Ubuntu (> 10.04) c'est que les nouveaux kernels bug beaucoup.

?
Je suis avec un kernel 3.3.8 sur un laptop, et je n'ai jamais eu un seul souci. Enfin, à part quand les ports usb ont arrêté de fonctionner, mais c'est parce que j'avais oublié de redémarrer après une mise à jour kernel.
Pour plus d'infos : uname -a >> "Linux laptop 3.3.8-1-ARCH #1 SMP PREEMPT Tue Jun 5 15:20:32 CEST 2012 x86_64 GNU/Linux"

Ça doit dépendre du matos, j'ai vu sur un forum anglais qu'il y avait des gens dans le même problème que moi... Enfin, sur mon PC fixe Ubuntu pète :D et ça me suffit.

« Enfin, à part quand les ports usb ont arrêté de fonctionner, mais c'est parce que j'avais oublié de redémarrer après une mise à jour kernel. »
Etant donné que tu ne changes pas de kernel avant le reboot et que normalement les modules pour l'ancien et le nouveau ne sont pas mélangés, et que même s'ils l'étaient les anciens resteraient chargés en mémoire, je vois mal comment ne pas redémarrer pourrait causer un problème.

Je ne redémarre jamais après quelque mise à jour que ce soit. Jamais eu aucun problème lié à ça.

Je suis sous Debian Sid.

« Enfin, sur mon PC fixe Ubuntu pète :D »
Littéralement, j'imagine. :/

> Etant donné que tu ne changes pas de kernel avant le reboot et que normalement les
> modules pour l'ancien et le nouveau ne sont pas mélangés, et que même s'ils l'étaient
> les anciens resteraient chargés en mémoire, je vois mal comment ne pas redémarrer
> pourrait causer un problème.

Justement. C'est bien le souci...
Arch supprime les anciens modules à la mise à jour kernel, pour ne pas garder des trucs inutiles. Donc ne restent que les modules déjà en mémoire. Et, vu que je n'avais pas encore utilisé les ports usb dans cette session, apparemment le module usb n'était pas chargé.
En tout cas, ça a fonctionné à nouveau après un reboot, alors depuis quand quelque chose ne marche pas je vais voir dans /lib/modules et je compare avec uname pour savoir si j'ai eu une màj kernel depuis. (Oui, je devrais lire les logs d'update, et je le fais certaines fois... Mais pas toutes.)

Bah, je pense

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include 
int main ()
{
    char chn[81], crt, *ptr1, *ptr2;
    scanf ("%80[^\n]",chn);
    for(unsigned int i = 0 ; chn[i] != '\0' ; ++i)
    {
        crt++;
    }
    for(unsigned int i = 0 ; i     {
        chn[i] += chn[crt-1-i];
        chn[crt-1-i] = chn[i] - chn[crt-1-i];
        chn[i] = chn[i] - chn[crt-1-i];
    }
    return 0;
}

Devrait être bon:

a = a + b
b = a - b
a = a - b

(Je sais, c'est pas une démonstration)
a = 2
b = 3

a = 2 + 3 = 5

b = 5 - 3 = 2
a = 5 - 2 = 3

Enfin, (je sais pas utiliser printf, j'utilise cout d'habitude)
Voilà.

Pour le fait que j'ai seulement 14 ans, on peut dire que j'ai de la chance d’être tombé dans la "marmite" assez tôt... ça m'a permis de pouvoir accéder à la programmation assez vite.

Personnellement, les sujets écrit sont ma bête noir, je ne comprends rien du tout ! Pour celui de la DF 2012 - Polytech'
J'étais avec une personne avec laquelle je me suis lié d'amitié (on avais pratiquement le même age, il avait 17 ans), on étais tous deux largués... Enfin, c'est pour dire quoi, qu'il y a beaucoup à apprendre... Plus particulièrement en algorithmique.

PS: (C'est à dire comment je code ? Je code mal ou ma convention d'écriture est moche ?)

mar, 19/06/2012 - 22:45 — Sylvain CHIRON

> Il est très bien le langage PHP,
Bonjour,

Je fais partis de la brigade anti-PHP. De tels propos ne peuvent être accepté sur ce site. Merci de vous renseigner sur les mal-faits, que dis je, les horreurs ! De cette abomination qu'est PHP.

Cordialement,
L'ensemble des informaticiens.

@OzVessalius :
Tu utilises des variables supplémentaires (les unsigned i).
Pour la première boucle, tu peux utiliser strlen (si on a le droit).
De plus, tu échanges les lettres, pas les mots. :)
This is a test -> test a is This
et non :
This is a test -> tset a si sihT

@Sylvain :
Je viens d'essayer, tu peux le faire sans ptr2, c'est à dire qu'avec "char chn[81], crt, *ptr;" et sans utiliser la lib standard (autre que pour scanf). C'est plus marrant (et en inversant vraiment chn, pas en faisant des printf en plein milieu). :)
Avec les "char chn[81], crt, *ptr;", c'est possible d'écrire un algo pas trop moche. Que sinon, en supposant que le scanf ne lit que de l'ASCII, c'est possible de tout faire avec seulement "char chn[81];" :

#define C chn
#define M 0x7F
#define I C[0]&=M,C[1]&=M,C[2]&=M,C[3]&=M,C[4]&=M,C[5]&=M,C[6]&=M
#define W 0x80
#define V ((C[6]&W)>>7|(C[5]&W)>>6|(C[4]&W)>>5|(C[3]&W)>>4|(C[2]&W)>>3|(C[1]&W)>>2|(C[0]&W)>>1)
#define X C[80]
#define F(Z)(C[Z]\^=W,C[Z]>>7)
#define N F(6)?0:F(5)?0:F(4)?0:F(3)?0:F(2)?0:F(1)?0:F(0)
#define D F(6)?F(5)?F(4)?F(3)?F(2)?F(1)?F(0):0:0:0:0:0:0
#define S(a,b){a\^=b&M;b\^=a&M;a\^=b&M;}
#define E(O)for(;(V\<7?C[V]:C[V]>0)&&(C[V]&M)O' ';N)

for(I;C[V]&M;N);X=V-1;for(I;X>0;N,X-=2)S(C[V],C[V+X])I;E(==);while(C[V]){X=W;E(!=)++X;X&=M;for(--X,D;X>0;D,X-=2)S(C[V],C[V-X])E(!=);E(==);}X=0;I;

Je l'ai (un peu) obfuscated pour laisser les gens chercher. :p Quoi, pour passer de 3 à 1 variables il suffit de regarder les premières macros pour deviner.

@OzVessalius : Hé mais t'es tout jeune en fait (en quatrième d'après ton commentaire France-IOI, j'avais pas réalisé que 14 ans c'était si bas, je m'attendais à ce que tu sois en troisième) ! Ouah, t'as du bol d'avoir découvert les sites si tôt, tu vas pouvoir progresser rapidement avant de ne plus pouvoir être sélectionné sur France-IOI et Prologin !
Tu verras, même si tu n'as pas dépassé la demi-finale cette année, l'année prochaine, si tu continues à t'entraîner, tu iras en finale (dès mon deuxième Prologin, j'y suis allé ; sauf que j'étais en seconde ; mais je ne connaissais pas France-IOI à l'époque).
Ouais, vu comment tu codes (je viens de t'aider sur les forums), ça devrait aller. Déjà sélectionné pour le stage en plus…

À propos de ton commentaire, je vois pas ce qu'il y a de mal à faire du web côté serveur… Il est très bien le langage PHP, mais je l'avoue pas très adapté aux algorithmes. Et puis tu n'es absolument pas mauvais en algorithmique pour ton âge ; moi, je ne sais même pas à quoi il sert, l'algorithme de Prim (et je suis niveau 4…).

Les graphes, j'aime pas énormément, ça me fait penser à la géométrie, ces sommets et ces arêtes. Le genre de problèmes que je sais résoudre est plutôt de ce genre :
Voici un code initial :

#include <stdio.h>

int main ()
{
char chn[81], crt, *ptr1, *ptr2;
scanf ("%80[^\n]",chn);

printf ("%s\n",chn);
return 0;
}

On considère que l'utilisateur entrera une ligne de 80 caractères maximum contenant uniquement des lettres et des espaces, sachant que ni le premier ni le dernier caractère ne sont des espaces.
Sans nouvelle déclaration, vous devez pouvoir échanger la position de tous les mots de chn , de sorte que le premier soit échangé avec le dernier, le deuxième avec l'avant-dernier, etc.

Je crois que je suis resté deux heures sur ce problème il y a deux ans. Si tu n'y arrives pas en ce laps de temps, ne t'inquiète pas, j'ai dû me tromper dans l'énoncé.
Mon animateur de programmation m'a donné cet exercice car il était donné lors d'entretiens d'embauche (me semble-t-il).

Ah mince, j'avais mal lu l'énoncé.
Je vois pas du tout, comment on peut faire, (et ton code obfuscated, est (trop) hard à comprendre, Des opérateur ternaire qui s'imbrique, et des opérateur de bits, je suis trop nul)

@PHP: Je suis ni contre le PHP, ni pour le PHP. Je suis neutre.

@epsilon012 > Je fais partie de la brigade anti-PHP. [...]

Ouais, moi aussi j'ai des choses à lui reprocher. Mais il me semble que le problème, c'est surtout qu'il est trop souvent présenté comme très accessible alors qu'il faut en fait avoir un bon niveau pour comprendre tous les mécanismes qu'il met en œuvre (une fois qu'on a ce niveau, ça passe). C'est vrai que s'y lancer dès la quatrième, je n'ose pas trop imaginer ce que ça doit donner… J'étais encore un utilisateur du goto à 13 ans, moi (en langage C je faisais du spaghetti)…

@OzVessalius > Bah, je pense [...]

OK, je me suis mal fait comprendre. En plus, j'ai oublié le printf dans le code initial.
Tu ne dois effectivement pas faire de nouvelle déclaration dans les boucles for comme dans le reste. Ensuite : non, pas d'usage de la bibliothèque standard, on n'écrit qu'à l'emplacement de la ligne de la fonction main que j'ai laissée vide et le but, c'est de faire de ceci (j'aurais dû donner l'exemple plus tôt, désolé) :
Une chaîne de test
Cela :
test de chaîne Une
Et non pas cela, ce que tu tentais d'obtenir :
tset ed enîahc enU
Car en fait les mots doivent rester dans leur ordre initial, ce que j'ai oublié de préciser. Je ne suis pas très fort pour exprimer un problème d'algorithmique…
D'ailleurs, je crois que ton code ne fonctionne pas, @OzVessalius… Ou alors c'est mon compilateur qui est mauvais.
Bon, je vais tester de résoudre le problème moi-même, voir si je me suis trompé dans les déclarations (bien que j'y croie peu).
Et ce n'est pas parce que je me suis limité à 80 caractères qu'il faut en profiter !

>> @OzVessalius : Hé mais t'es tout jeune en fait (en quatrième d'après ton commentaire France-IOI, j'avais pas réalisé que 14 ans c'était si bas, je m'attendais à ce que tu sois en troisième) ! Ouah, t'as du bol d'avoir découvert les sites si tôt, tu vas pouvoir progresser rapidement avant de ne plus pouvoir être sélectionné sur France-IOI et Prologin !
Tu verras, même si tu n'as pas dépassé la demi-finale cette année, l'année prochaine, si tu continues à t'entraîner, tu iras en finale (dès mon deuxième Prologin, j'y suis allé ; sauf que j'étais en seconde ; mais je ne connaissais pas France-IOI à l'époque).

C'est sûr ! Tu vas progresser vachement vite !

T'as de la chance tu pourras participer à la finale, personnellement je pourrais espérer y participer en terminale mais cette année c'est mort et la suivante aussi je crois (c'est haut-niveau quand même !).

>> (et je suis niveau 4…)

!!! C'est vrai ! Argh ! Comment as-tu fait ? Je m'étais fixé pour objectif personnel de passer niveau 4 avant toi !

>> Les graphes, j'aime pas énormément, ça me fait penser à la géométrie, ces sommets et ces arêtes.

Hérésie ! Moi, au contraire, j'adore (même si je ne suis pas très doué).

D'ailleurs j’aimerais savoir comment tu as procédé pour "bloquer une route". Ma solution me semblait bien galère. Il y a moyen de s'en sortir sans pointeur ? Ais-je à m'inquiéter des contraintes de mémoire ? De temps ?

Ce que je n'aime VRAIMENT pas c'est les algorithmes géométriques. Pourquoi ? Parce que mêmes les conseils je ne les comprend pas. Et pour cause : j'ai aucune connaissances en géométrie vu que le programme ne va pas jusque là en seconde; c'est frustrant. En plus je suis très bon en maths, ça devrait me prendre 10s comme les algorithmes semi-numériques. Je ne sais même pas ce qu'est un produit scalaire !

@@lgorythme > !!! C'est vrai ! Argh ! Comment as-tu fait ? Je m'étais fixé pour objectif personnel de passer niveau 4 avant toi !

Ha ha ! Et réciproquement ! J'avais peur que tu passes niveau 4 avant moi.
J'ai dû tricher pour Bloquer une route, avec un gras switch pour passer les deux tests que je n'arrivais pas à passer.
Et malgré la correction je ne comprends toujours pas le problème de mes deux algorithmes : un parcours en profondeur, un parcours en largeur, avec le même objectif.

Ce qui m'éclate avec les algorithmes géométriques, c'est de faire des équations de droite… À part ça, la géométrie, ça m'embrouille, en général, ces formes. Je préfère les chiffres, tout en chiffres.

Le produit scalaire, je crois qu'il faut savoir trois trucs (u et v sont deux vecteurs de coordonnées x, y, x' et y') :
(u • v se prononce u scalaire v.)
u • v = ||u|| × ||v|| × cos(u,v)
u • v = x × x' + y × y'
Si u • v = 0, alors u et v sont orthogonaux (et encore, je crois pas que cette propriété soit nécessaire sur France-IOI).

mer, 20/06/2012 - 13:45 — Sylvain CHIRON

> Ouais, moi aussi j'ai des choses à lui reprocher. Mais il me semble
> que le problème, c'est surtout qu'il est trop souvent présenté comme
> très accessible alors qu'il faut en fait avoir un bon niveau pour
> comprendre tous les mécanismes qu'il met en œuvre (une fois qu'on a ce
> niveau, ça passe). C'est vrai que s'y lancer dès la quatrième, je
> n'ose pas trop imaginer ce que ça doit donner… J'étais encore un
> utilisateur du goto à 13 ans, moi (en langage C je faisais du
> spaghetti)…
C'est bien le problème, il faut beaucoup s'investir dans l'apprentissage du langage pour avoir les bases (parce que PHP est inconsistant) et en plus le langage n'offre pas beaucoup de mécanismes de haut niveau.
C'est bien pour cela qu'il faut préférer Python à PHP.
Si je peux vous donner un conseil pour Prologin : apprenez un langage autre que PHP. Si vous ne connaissez pas déjà le C, caml, C++ ou autre et que vous ne savez pas par où commencer, essayez Python.

mer, 20/06/2012 - 13:39 — OzVessalius

> (et ton code obfuscated, est (trop) hard à comprendre, Des opérateur
> ternaire qui s'imbrique, et des opérateur de bits, je suis trop nul)
Mais non, c'est fait exprès. Même moi là, j'ai un peu de mal à le comprendre et dans 1 an, je me dirai « WTF? ». C'est fait exprès pour pas que vous ayez la réponse sous les yeux (et pour prouver que c'est faisable avec chn seulement).
En théorie, c'est même faisable sans aucune variable, mais bon le programme résultant est trop gros pour être compilé. :p

J'ai commencé à apprendre le C/C++ en 6ème, à cette époque, j'étais vraiment un gros "nul", je copiais des bout de code, etc... Jusqu'à que je décide de m'y mettre correctement (Site du Zéro, Développez, etc...) J'ai progressé pas mal, niveau maîtrise du langage (même si je n'arrive toujours pas à manipuler correctement la méta-programmation)
Enfin, j'ai vu Prologin sur le Site du Zéro, et quand j'ai vu que c'était ouvert aux moins de 20 ans, je me suis dit, allons-y, on va tester son niveau. (J'ai passer à l'aise, le questionnaire (sauf question quatre, j'ai essayer la programmation dynamique, mais je me suis pris une claque))
J'ai été pris pour la demi-finale, stressé, j'ai choisi la date la plus éloigné (Avec Polytech')
Après avoir perdu la demi-finale (Je le savais même avant d'avoir eu le mail, j'avais fait n'importe quoi au sujet écrit et n'importe quoi en salle machine, alors que chez moi, j'avais réussi Chantier Intergalactique)
J'ai commencé à traîner sur les forums de Prologin et l'IRC aussi, jusqu'à qu'on parle de France IOI, alors, je suis parti voir qu'est ce que c'était, et encore une nouveau site d'entraînement ! Super.

Et maintenant, je suis là.

PS: Finalement, je l'ai réussi ce fuckin'histogramme (Merci à jarod et à toi frigory !)

"J'ai commencé à apprendre le C/C++ "
-> Pas la peine de lire plus loin, tu vois un petit point rouge sur ton front.

Répondre au sujet

Vous devez vous enregistrer ou vous connecter pour poster des messages.