Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2287 connectés 

 

Sujet(s) à lire :
    - Who's who@Programmation
 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  25158  25159  25160  ..  27185  27186  27187  27188  27189  27190
Auteur Sujet :

[blabla@olympe] Le topic du modo, dieu de la fibre et du monde

n°2434882
___alt
Posté le 08-12-2022 à 16:32:15  profilanswer
 

Reprise du message précédent :

gfive a écrit :

Bah si un arbre est visible depuis 1 des bords, et que tu sais depuis lequel, ça réduit ce qu'il y a à calculer pour la partie 2.


 
Bof, ma façon de gérer la partie 1 n'a aucun lien évident avec la partie 2 je trouve.
 
Spoiler solution partie 1 :
 

Spoiler :


Soit une ligne ou une colonne du tableau.
Je parcours chaque arbre en séquence.
Tout arbre plus haut que la hauteur maximum précédemment rencontrée est visible.
J'arrête quand j'arrive au bord ou à un arbre de hauteur 9.
 
Je fais ça pour toutes les lignes et toutes les colonnes dans les 2 sens.
Une sorte de raycasting du pauvre en fait.


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
mood
Publicité
Posté le 08-12-2022 à 16:32:15  profilanswer
 

n°2434883
koskoz
They see me trollin they hatin
Posté le 08-12-2022 à 16:41:18  profilanswer
 

Je viens d'être contacter par un RH de la boite qui nous a racheté pour un poste à Sophia Antipolis [:dawak]
 
Je réponds ? [:raph0ux]


---------------
Twitter
n°2434884
el muchach​o
Comfortably Numb
Posté le 08-12-2022 à 16:47:03  profilanswer
 

__alt : Pas mal. C'est probablement le meilleur algorithme, ça a l'air d'être du O(n²) si je ne m'abuse. En plus easy à programmer.


Message édité par el muchacho le 08-12-2022 à 16:54:42

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2434885
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 08-12-2022 à 17:05:00  profilanswer
 

gfive a écrit :

 

Bah si un arbre est visible depuis 1 des bords, et que tu sais depuis lequel, ça réduit ce qu'il y a à calculer pour la partie 2.

 



Mais du coup est-ce que c'est utile dans la mesure où il faut de toutes façons calculer pour tous les arbres ?

n°2434886
nraynaud
lol
Posté le 08-12-2022 à 17:07:56  profilanswer
 

___alt a écrit :


 
Bof, ma façon de gérer la partie 1 n'a aucun lien évident avec la partie 2 je trouve.
 
Spoiler solution partie 1 :
 

Spoiler :


Soit une ligne ou une colonne du tableau.
Je parcours chaque arbre en séquence.
Tout arbre plus haut que la hauteur maximum précédemment rencontrée est visible.
J'arrête quand j'arrive au bord ou à un arbre de hauteur 9.
 
Je fais ça pour toutes les lignes et toutes les colonnes dans les 2 sens.
Une sorte de raycasting du pauvre en fait.



mais tu résouds un problème de visibilité sans utiliser un BSP tree ? :(
 
 
8<--------------------8<---------------------
rien à voir, mais c'est vrai que d'utiliser des matrices 4x4 ça réduit vachement le bordel:  
 
https://i.imgur.com/2fddvq9.png
[:pingouino]
 
avoir un millefeuille de matrices c'est un peu normal, mais ça serait bien de les organiser en pile explicite avec une "tête courante", de documenter les couches quelque part, et de pas séparer les rotations des translations, vu qu'on est en 4D explicitement pour ça.


---------------
trainoo.com, c'est fini
n°2434887
Kenshineuh
Posté le 08-12-2022 à 17:10:48  profilanswer
 

koskoz a écrit :

Je viens d'être contacter par un RH de la boite qui nous a racheté pour un poste à Sophia Antipolis [:dawak]
 
Je réponds ? [:raph0ux]


 
 
C'est arrivé à un de mes potes. Il a demandé le salaire du poste pour voir s'il se faisait entuber mais la RH a découvert l'entourloupe trop vite. :D

n°2434889
gfive
Posté le 08-12-2022 à 17:12:03  profilanswer
 

___alt a écrit :


 
Bof, ma façon de gérer la partie 1 n'a aucun lien évident avec la partie 2 je trouve.
 
Spoiler solution partie 1 :
 

Spoiler :


Soit une ligne ou une colonne du tableau.
Je parcours chaque arbre en séquence.
Tout arbre plus haut que la hauteur maximum précédemment rencontrée est visible.
J'arrête quand j'arrive au bord ou à un arbre de hauteur 9.
 
Je fais ça pour toutes les lignes et toutes les colonnes dans les 2 sens.
Une sorte de raycasting du pauvre en fait.



 
J'ai fait pareil :D Du coup j'ai pas du tout utilisé ma réflexion d'au dessus :o


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2434890
nraynaud
lol
Posté le 08-12-2022 à 17:15:50  profilanswer
 

Code :
  1. GLC_Matrix4x4& GLC_Matrix4x4::invert(void)
  2. {
  3. const double det= determinant();
  4. // Test if the inverion is possible
  5. if (det == 0.0f) return *this;
  6. const double invDet = 1.0 / det;
  7. GLC_Matrix4x4 TCoMat= getCoMat4x4().getTranspose();
  8. for (int i= 0; i < TAILLEMAT4X4; i++)
  9. {
  10.  m_Matrix[i]= TCoMat.m_Matrix[i] * invDet;
  11. }
  12. return *this;
  13. }


hum, y'a des pi/180 partout dans le code, j'aurai probablement pas choisi ça.


---------------
trainoo.com, c'est fini
n°2434891
___alt
Posté le 08-12-2022 à 17:18:55  profilanswer
 

nraynaud a écrit :


mais tu résouds un problème de visibilité sans utiliser un BSP tree ? :(
 
 
8<--------------------8<---------------------
rien à voir, mais c'est vrai que d'utiliser des matrices 4x4 ça réduit vachement le bordel:  


 
Sir, this is la COGIP, ici on fait des web services [:pingouino]


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2434892
nraynaud
lol
Posté le 08-12-2022 à 17:20:28  profilanswer
 

moi aussi :o
en PHP :o
ma spécialité c'est de lire un XML et de sortir un fichier zip :o


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 08-12-2022 à 17:20:28  profilanswer
 

n°2434893
flo850
moi je
Posté le 08-12-2022 à 17:29:42  profilanswer
 

nraynaud a écrit :

moi aussi :o
en PHP :o
ma spécialité c'est de lire un XML et de sortir un fichier zip :o


moi c'est plutot l'inverse en ce moment :/

Code :
  1. assert.strictEqual(buffer.slice(0,4).toString('ascii'),'COWD')
  2.    assert.strictEqual(buffer.readInt32LE(4), 1) // version
  3.    assert.strictEqual(buffer.readInt32LE(8), 3) // flags
  4.    const sectorCapacity = buffer.readInt32LE(12)
  5.    const sectorGrainNumber = buffer.readInt32LE(16)
  6.    assert.strictEqual(buffer.readInt32LE(20), 4) // grain directory position in sectors
  7.    const nbGrainDirectoryEntries = buffer.readInt32LE(24)
  8.    const nextFreeSector = buffer.readInt32LE(28)



---------------

n°2434894
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 08-12-2022 à 17:41:20  profilanswer
 

nraynaud a écrit :

Code :
  1. GLC_Matrix4x4& GLC_Matrix4x4::invert(void)
  2. {
  3. const double det= determinant();
  4. // Test if the inverion is possible
  5. if (det == 0.0f) return *this;
  6. const double invDet = 1.0 / det;
  7. GLC_Matrix4x4 TCoMat= getCoMat4x4().getTranspose();
  8. for (int i= 0; i < TAILLEMAT4X4; i++)
  9. {
  10.  m_Matrix[i]= TCoMat.m_Matrix[i] * invDet;
  11. }
  12. return *this;
  13. }


hum, y'a des pi/180 partout dans le code, j'aurai probablement pas choisi ça.


 
Ce code :D Tu veux l'inverse alors que c'est pas inversible ? Tiens voici la matrice telle quelle, qui ne fait pas du tout ce que tu veux :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2434895
gfive
Posté le 08-12-2022 à 17:41:51  profilanswer
 

hephaestos a écrit :


Mais du coup est-ce que c'est utile dans la mesure où il faut de toutes façons calculer pour tous les arbres ?

 

...tu peux conserver le résultat de ce calcul pour la partie 2 et donc en économiser un peu.
Mais c'est probablement assez marginal.


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2434896
masklinn
í dag viðrar vel til loftárása
Posté le 08-12-2022 à 17:50:33  profilanswer
 

flo850 a écrit :


moi c'est plutot l'inverse en ce moment :/

Code :
  1. assert.strictEqual(buffer.slice(0,4).toString('ascii'),'COWD')
  2.    assert.strictEqual(buffer.readInt32LE(4), 1) // version
  3.    assert.strictEqual(buffer.readInt32LE(8), 3) // flags
  4.    const sectorCapacity = buffer.readInt32LE(12)
  5.    const sectorGrainNumber = buffer.readInt32LE(16)
  6.    assert.strictEqual(buffer.readInt32LE(20), 4) // grain directory position in sectors
  7.    const nbGrainDirectoryEntries = buffer.readInt32LE(24)
  8.    const nextFreeSector = buffer.readInt32LE(28)




https://www.erlang.org/doc/erlang-logo.png


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2434897
___alt
Posté le 08-12-2022 à 17:54:40  profilanswer
 

nraynaud a écrit :

moi aussi :o
en PHP :o
ma spécialité c'est de lire un XML et de sortir un fichier zip :o


 
Ici c'est le jour de la marmotte.
 

Code :
  1. private static String readResource(String resourceName) {
  2.        try (
  3.                var is = FolderCreator.class.getResourceAsStream(resourceName);
  4.                var bis = new BufferedInputStream(requireNonNull(is));
  5.                var bytes = new ByteArrayOutputStream();
  6.        ) {
  7.            for (int result = bis.read(); result != -1; result = bis.read()) {
  8.                bytes.write((byte) result);
  9.            }
  10.            return bytes.toString(StandardCharsets.UTF_8);
  11.        } catch (IOException e) {
  12.            System.out.println("Error while reading resource " + resourceName);
  13.            throw new RuntimeException(e);
  14.        }
  15.    }


 
(c'est pas du code de prod, d'où le yolo error handling)


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2434898
invik
J'ai pas ma manette :o
Posté le 08-12-2022 à 18:07:46  profilanswer
 

masklinn a écrit :


En même temps avec cette merde de S0ix y’a plus personne qu’est prêt pour le desktop \o/


 [:tiwow]

n°2434899
ratibus
Posté le 08-12-2022 à 18:10:06  profilanswer
 

___alt a écrit :


 
Sir, this is la COGIP, ici on fait des web services [:pingouino]


 
Nraynaud il a quelques jours d'avance sur l'AoC.
 
Préparez-vous aux matrices 4x4 dans les prochains jours  [:perco_35:2]


---------------
Mon blog
n°2434900
___alt
Posté le 08-12-2022 à 18:12:14  profilanswer
 

ratibus a écrit :


 
Nraynaud il a quelques jours d'avance sur l'AoC.
 
Préparez-vous aux matrices 4x4 dans les prochains jours  [:perco_35:2]


 
On dit matrices SUV [:cbrs]


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°2434901
beel1
Posté le 08-12-2022 à 18:23:37  profilanswer
 

Dion a écrit :

Je ne comprend pas, je croyais que c'était Apple qui faisait des OS de merde  :heink:


masklinn a écrit :


En même temps avec cette merde de S0ix y’a plus personne qu’est prêt pour le desktop \o/


Dans LTT ils disent que les macs sont concernés aussi
 
Bref, batterie amovible FTW [:kbchris]

n°2434902
R3g
fonctionnaire certifié ITIL
Posté le 08-12-2022 à 18:27:03  profilanswer
 

les pythoneux (mask ?), vous pouvez m'expliquer pourquoi

Code :
  1. list(reversed([tree > other for other in row[:j]]))


ne donne pas le même résultat que

Code :
  1. [tree > other for other in row[j-1::-1]]


?
 
edit : trouvé ! ça change de sens quand j==0


Message édité par R3g le 08-12-2022 à 18:34:41

---------------
Au royaume des sourds, les borgnes sont sourds.
n°2434903
Dion
Acceuil
Posté le 08-12-2022 à 18:30:52  profilanswer
 

beel1 a écrit :


Dans LTT ils disent que les macs sont concernés aussi
 
Bref, batterie amovible FTW [:kbchris]


Ils disent que "oui peut être éventuellement parfois" mais qu'ils passent sous mac quand ils ont besoin de laptop dont ils sont sûrs  :sol:


---------------
It is not called show art
n°2434905
masklinn
í dag viðrar vel til loftárása
Posté le 08-12-2022 à 18:47:27  profilanswer
 

beel1 a écrit :

Bref, batterie amovible FTW [:kbchris]


Je pense pas qu'une batterie amovible fixe le problème du PC qui prend feu dans ton sac.
 
Et si tu enlèves la batterie pour éviter le problème tu peux juste éteindre la machine.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2434906
Dion
Acceuil
Posté le 08-12-2022 à 19:17:25  profilanswer
 

Il y en a ici qui ont regardé leurs récap reddit annuel ?  [:pingouino]


---------------
It is not called show art
n°2434908
beel1
Posté le 08-12-2022 à 19:41:42  profilanswer
 

Dion a écrit :


Ils disent que "oui peut être éventuellement parfois" mais qu'ils passent sous mac quand ils ont besoin de laptop dont ils sont sûrs  :sol:


Ah c'est bien ce que j'avais compris [:xx_xx]

masklinn a écrit :


Et si tu enlèves la batterie pour éviter le problème tu peux juste éteindre la machine.


En même temps c'est ce que je fais, j'éteins dès que je dois sortir avec, la veille c'est juste pour changer de pièce

n°2434909
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 08-12-2022 à 19:46:39  profilanswer
 

Dion a écrit :

Il y en a ici qui ont regardé leurs récap reddit annuel ? [:pingouino]


Oui, le mien n'a rien de pingouino. Pourquoi ?

n°2434911
Dion
Acceuil
Posté le 08-12-2022 à 19:59:26  profilanswer
 

hephaestos a écrit :


Oui, le mien n'a rien de pingouino. Pourquoi ?


Je pensais que le site était un truc de gros lurkers, comme moi, qui ne postaient presque jamais. Et en fait je suis dans le top 1% des karma whore  :sweat:


---------------
It is not called show art
n°2434912
Ydalb
In Crêpes n' Cidre I Trust!
Posté le 08-12-2022 à 20:11:01  profilanswer
 

ratibus a écrit :

 

C'est bien t'as réimplémenté la boucle for avec un while :o

 

J’avais pas fait gaffe :D j’étais parti sur une à condition dans ma boucle au début ça doit être pour ça :o

 

Mais ça tourne suffisamment vite :o

 
Code :
  1. $ time php 2022/day8/solve.php
  2. 1845
  3. 230112
  4. php 2022/day8/solve.php  0,04s user 0,01s system 61% cpu 0,093 total


Message édité par Ydalb le 08-12-2022 à 20:16:24

---------------
:o
n°2434913
masklinn
í dag viðrar vel til loftárása
Posté le 08-12-2022 à 20:11:29  profilanswer
 

el muchacho a écrit :

Je me suis pris la tête parce que j'avais inversé i et j. :/


J'ai eu le même problème, donc au final j'ai converti les i et j en row & col pour chaque direction pour pas m'y perdre [:pingouino]
 
Là j'ai un truc très moche mais qui va vite:

Benchmark 1: ./target/release/day8
  Time (mean ± σ):       1.3 ms ±   0.2 ms    [User: 0.8 ms, System: 0.2 ms]
  Range (min … max):     1.0 ms …   3.4 ms    769 runs


[:petrus75]

Dion a écrit :

Il y en a ici qui ont regardé leurs récap reddit annuel ?  [:pingouino]


Non, c'était ça la banner que j'ai fermé qui parlait de bananes en fait?

beel1 a écrit :

En même temps c'est ce que je fais, j'éteins dès que je dois sortir avec, la veille c'est juste pour changer de pièce


OK mais si t'es un boomer t'es pas concerné :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2434916
masklinn
í dag viðrar vel til loftárása
Posté le 08-12-2022 à 20:20:13  profilanswer
 

R3g a écrit :

J'ai refait le jour 8 en prenant un peu de recul. C'est pas plus efficace mais ça fait moins bricolage : https://pastebin.com/urvKgab6


 [:urd]  

Spoiler :


Il y aurait pas moyen de faire une version plus efficace en changeant la carte de visibilité pour être une distance de visibilité depuis l'arbre? (donc le truc que tu multiplies dans la partie 2)?
 
Tu peux avoir la partie 1 (est-ce que l'arbre est visible de dehors) en regardant si la distance de visibilité est égale à la distance depuis le bord. Ça marcherait pas?


Spoiler :

mais il devrait y avoir moyen de pas repasser sur toutes les cellules pour calculer la distance de vis’.  
 
Au moins commencer des bords et sauter de la distance de vis’ des noeuds que tu rencontres mais c’est bof. Ou alors accumuler des distances de vis pour chaque hauteur?

Spoiler :


Je pense que ça marcherait, avec 2 passages sur chaque cellule, en 2 itérations: une itération du coin haut gauche au bas droit, tu peux calculer la distance de visibilité vers le haut et la gauche de tous les arbres, puis une itération du coin bas droit au haut gauche qui calcule la distance de vis vers le bas et la droite, et peut calculer la visibilité de l’arbre et son score scénique en même temps.  
 
Tu peux faire les deux passes de visibilité en même temps (en inversant les coordonnées) mais dans ce cas tu dois quand même faire une seconde passe pour calculer la visibilité… wait no ça marche aussi c’est juste que la première opération a toutes les infos pour la seconde moitié (bas-droit) alors que la seconde a toutes les infos pour la 1e moitié

Message cité 1 fois
Message édité par masklinn le 08-12-2022 à 20:33:43

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2434918
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 08-12-2022 à 20:36:26  profilanswer
 

masklinn a écrit :


[:urd]

Spoiler :


Il y aurait pas moyen de faire une version plus efficace en changeant la carte de visibilité pour être une distance de visibilité depuis l'arbre? (donc le truc que tu multiplies dans la partie 2)?

 

Tu peux avoir la partie 1 (est-ce que l'arbre est visible de dehors) en regardant si la distance de visibilité est égale à la distance depuis le bord. Ça marcherait pas?


Spoiler :

mais il devrait y avoir moyen de pas repasser sur toutes les cellules pour calculer la distance de vis’.

 

Au moins commencer des bords et sauter de la distance de vis’ des noeuds que tu rencontres mais c’est bof. Ou alors accumuler des distances de vis pour chaque hauteur?

Spoiler :


Je pense que ça marcherait, avec 2 passages sur chaque cellule, en 2 itérations: une itération du coin haut gauche au bas droit, tu peux calculer la distance de visibilité vers le haut et la gauche de tous les arbres, puis une itération du coin bas droit au haut gauche qui calcule la distance de vis vers le bas et la droite, et peut calculer la visibilité de l’arbre et son score scénique en même temps.

 

Tu peux faire les deux passes de visibilité en même temps (en inversant les coordonnées) mais dans ce cas tu dois quand même faire une seconde passe pour calculer la visibilité… wait no ça marche aussi c’est juste que la première opération a toutes les infos pour la seconde moitié (bas-droit) alors que la seconde a toutes les infos pour la 1e moitié



Comment tu calcules la distance de visibilité en une seule passe si tu ne vois pas le bord ?

n°2434919
R3g
fonctionnaire certifié ITIL
Posté le 08-12-2022 à 20:50:54  profilanswer
 

Dion a écrit :


Je pensais que le site était un truc de gros lurkers, comme moi, qui ne postaient presque jamais. Et en fait je suis dans le top 1% des karma whore  :sweat:


Il me dit la même chose. C'est n'importe quoi, je dois pas avoir engrangé plus de 200 upvotes dans l'année. D'ailleurs la plupart des autres stats me paraissent complètement à côté de la plaque, ça n'a rien à voir avec mon ressenti


---------------
Au royaume des sourds, les borgnes sont sourds.
n°2434920
masklinn
í dag viðrar vel til loftárása
Posté le 08-12-2022 à 21:01:52  profilanswer
 

hephaestos a écrit :


Comment tu calcules la distance de visibilité en une seule passe si tu ne vois pas le bord ?


Tu pars du bord, et pour chaque cellule tu peux calculer la distance de visibilité pour chaque hauteur, sur base du même tableau à la cellule précédente, et de l'arbre à la cellule précédente.

 

Genre si t'as 4 3 7, le premier arbre a une distance de visibilité de 0 à gauche, à toutes les hauteurs.

 

Vu que le 1er arbre est à 4, la cellule 2 a des visibilités de 0 0 0 0 0 1 1 1 1 1 (un arbre de taille 4 ou moins a une vis de 0, un arbre de taille 5+ a une vis de 1), sa visibilité à gauche est de 0 vu que l'arbre a une taille 3.

 

Vu que le 2e arbre est à 3, la cellule 3 a des visibilités de 0 0 0 0 1 2 2 2 2 2, l'arbre étant à 7, sa visibilité à gauche est de 2, vu qu'il est à l'index 2 depuis la gauche il est également visible du bord gauche.

 

Pour calculer le scénique il faut chipoter un peu parce-que c'est +1 si tu touches pas le bord, mais +0 si tu touches le bord, mais tu as cette info à partir du calcul précédent (est-ce qu'il est visible depuis le bord) donc c'est pas une question difficile.

 

Tu peux calculer la visibilité haut et gauche en itérant du coin haut gauche, et bas et droite en itérant du coin bas-droit (t'as besoin de deux rows de mémoire pour garder leurs tailles pour la ligne suivante). À partir du moment où tes deux threads se croisent, ils ont toutes les infos pour calculer la partie 1 et la partie 2.

 

En tout cas dans ma tête j'ai l'impression que ça devrait marcher. Mais ça se trouve je rate un truc?

Message cité 1 fois
Message édité par masklinn le 08-12-2022 à 21:13:19

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2434921
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 08-12-2022 à 21:35:48  profilanswer
 

masklinn a écrit :


Tu pars du bord, et pour chaque cellule tu peux calculer la distance de visibilité pour chaque hauteur, sur base du même tableau à la cellule précédente, et de l'arbre à la cellule précédente.
 
Genre si t'as 4 3 7, le premier arbre a une distance de visibilité de 0 à gauche, à toutes les hauteurs.
 
Vu que le 1er arbre est à 4, la cellule 2 a des visibilités de 0 0 0 0 0 1 1 1 1 1 (un arbre de taille 4 ou moins a une vis de 0, un arbre de taille 5+ a une vis de 1), sa visibilité à gauche est de 0 vu que l'arbre a une taille 3.
 
Vu que le 2e arbre est à 3, la cellule 3 a des visibilités de 0 0 0 0 1 2 2 2 2 2, l'arbre étant à 7, sa visibilité à gauche est de 2, vu qu'il est à l'index 2 depuis la gauche il est également visible du bord gauche.
 
Pour calculer le scénique il faut chipoter un peu parce-que c'est +1 si tu touches pas le bord, mais +0 si tu touches le bord, mais tu as cette info à partir du calcul précédent (est-ce qu'il est visible depuis le bord) donc c'est pas une question difficile.
 
Tu peux calculer la visibilité haut et gauche en itérant du coin haut gauche, et bas et droite en itérant du coin bas-droit (t'as besoin de deux rows de mémoire pour garder leurs tailles pour la ligne suivante). À partir du moment où tes deux threads se croisent, ils ont toutes les infos pour calculer la partie 1 et la partie 2.
 
En tout cas dans ma tête j'ai l'impression que ça devrait marcher. Mais ça se trouve je rate un truc?


 
Ça joue :jap: (O(nˆ2 x h) du coup !)

n°2434922
Dion
Acceuil
Posté le 08-12-2022 à 22:03:32  profilanswer
 

masklinn a écrit :

Non, c'était ça la banner que j'ai fermé qui parlait de bananes en fait?


C'était une banner, je ne me rappelle plus du texte dessus mais ils ne doivent pas en sortir plusieurs par jour :o
 

R3g a écrit :

Il me dit la même chose. C'est n'importe quoi, je dois pas avoir engrangé plus de 200 upvotes dans l'année. D'ailleurs la plupart des autres stats me paraissent complètement à côté de la plaque, ça n'a rien à voir avec mon ressenti


:jap:


---------------
It is not called show art
n°2434923
Flaie
Posté le 08-12-2022 à 22:24:56  profilanswer
 

J'ai fait défiler 15000 bananes, top 7% des redditors à avoir reçu du karma, sûrement parce que j'ai posté des visu advent of code et une photo de rolex sur watches :o
 
Ça me semble bizarre d'être dans le top 7% vu que je ne fais quasi que lurker 99% du temps

n°2434924
beel1
Posté le 08-12-2022 à 22:36:20  profilanswer
 

Moi qui n'y suis pas allé de l'année c'est cohérent :o

n°2434925
nucl3arfl0
Better Call Saul
Posté le 08-12-2022 à 22:42:26  profilanswer
 

Allez à mon tour, sûrement crados et pas optimal..  [:oubrouhoum:1]  
 
https://github.com/fbeclin/aoc_2022 [...] _08/run.py

n°2434926
el muchach​o
Comfortably Numb
Posté le 08-12-2022 à 23:05:43  profilanswer
 

Bon, finalement pu terminer le pb du jour :o


    inline fun <T> Iterable<T>.takeUntil(predicate: (T) -> Boolean): List<T> {
        val list = ArrayList<T>()
        for (item in this) {
            list.add(item)
            if (predicate(item))
                break
        }
        return list
    }

 

   fun part2(lines: List<String> ) : Int {
        var scenic_score = 0
        var max = 0
        val rows = grid(lines)
        for(i in 0.. rows.size-1) {
            val row = rows.get(i)
            for (j in 0.. row.size-1){
                var tree = row.get(j)
                var col = mutableListOf<Int>()
                for(k in 0.. rows.size-1) { col.add(rows.get(k).get(j)) }
                val left = row.subList(0,j).reversed().takeUntil{ it >= tree }.count()
                val right = row.subList(j+1, row.size).takeUntil{ it >= tree }.count()
                val up = col.subList(0,i).reversed().takeUntil{ it >= tree }.count()
                val down = col.subList(i+1, col.size).takeUntil{ it >= tree }.count()
                //println("($i,$j) = $tree : ${left}, ${right}, ${up}, ${down}" )
                scenic_score = left * right * up * down
                if (scenic_score >= max) max = scenic_score
            }
        }
        return max
    }


Après avoir essayé avec fold et foldRight (pouvait pas marcher, logique foireuse), puis takeWhile (pouvait pas marcher, logique foireuse)...


Message édité par el muchacho le 08-12-2022 à 23:30:55

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2434927
el muchach​o
Comfortably Numb
Posté le 08-12-2022 à 23:13:49  profilanswer
 

Franchement, même si je le maîtrise pas du tout pour l'instant, j'apprends quelques petits trucs tous les jours et je commence à trouver ce langage de plus en plus attrayant.

 

Cette solution fait appel à plusieurs syntaxes que je ne connais pas:


fun main() {
    val M = generateSequence(::readlnOrNull).asIterable().map { it.map(Char::digitToInt) }

 

   fun linesOfSight(x: Int, y: Int) = sequenceOf(
        sequenceOf((x - 1 downTo 0), (x + 1 until M[0].size)).map { it.map { x -> x to y } },
        sequenceOf((y - 1 downTo 0), (y + 1 until M.size)).map { it.map { y -> x to y } }
    ).flatten().map { it.map { (x, y) -> M[y][x] } }

 

   with(M.flatMapIndexed { y, l -> l.mapIndexed { x, h -> Triple(x, y, h) } }) {
        println(count { (x, y, h) -> linesOfSight(x, y).any { it.isVisible(h) } })
        println(maxOf { (x, y, h) -> linesOfSight(x, y).map { it.countVisible(h) }.reduce(Int::times) })
    }
}

 

private fun List<Int>.isVisible(h: Int) = all { it < h }
private fun List<Int>.countVisible(h: Int) = indexOfFirst { it >= h }.let { if (it == -1) size else it + 1 }


Flaie, à quoi servent "with" et "let" ?  De façon générale, j'ai une vague idée de ce que fait le programme, mais ce n'est pas complètement clair.

Message cité 1 fois
Message édité par el muchacho le 08-12-2022 à 23:32:47

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2434928
nraynaud
lol
Posté le 08-12-2022 à 23:47:55  profilanswer
 

https://img3.super-h.fr/images/2022/12/08/snapshot_168071acedf9aded590de.jpg
Y’avait mes tracteurs qui critiquaient ma plomberie, mais d’après le niveau laser, tout a l’air de pencher dans le bon sens :o


---------------
trainoo.com, c'est fini
n°2434929
el muchach​o
Comfortably Numb
Posté le 08-12-2022 à 23:48:07  profilanswer
 

Sweet mother of WTF, il y a vraiment de masos: AOC 2022 en SQL


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  25158  25159  25160  ..  27185  27186  27187  27188  27189  27190

Aller à :
Ajouter une réponse
 

Sujets relatifs
Plus de sujets relatifs à : [blabla@olympe] Le topic du modo, dieu de la fibre et du monde


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)