GNU/Linux

Générer un labyrinthe avec le langage RUST et claude.ia

Posted by admin on avril 21, 2025
GNU/Linux, rust / No Comments
use rand::prelude::*;
use std::collections::HashSet;

fn main() {
    // Dimensions du labyrinthe (doit être impair pour avoir des murs aux bords)
    let width = 29;
    let height = 19;
    
    // Générer le labyrinthe
    let maze = generate_maze(width, height);
    
    // Afficher le labyrinthe
    print_maze(&maze, width, height);
}

fn generate_maze(width: usize, height: usize) -> Vec<Vec<char>> {
    // Initialiser le labyrinthe avec des murs partout
    let mut maze = vec![vec!['#'; width]; height];
    let mut rng = rand::thread_rng();
    
    // Ensemble pour suivre les cellules visitées
    let mut visited = HashSet::new();
    
    // Pile pour l'algorithme DFS
    let mut stack = Vec::new();
    
    // Point de départ (coordonnées impaires)
    let start_x = 1;
    let start_y = 1;
    
    // Marquer le point de départ comme un chemin
    maze[start_y][start_x] = ' ';
    visited.insert((start_x, start_y));
    stack.push((start_x, start_y));
    
    // Directions possibles: droite, bas, gauche, haut
    let directions = [(2, 0), (0, 2), (-2, 0), (0, -2)];
    
    // Tant que la pile n'est pas vide
    while !stack.is_empty() {
        let current = stack.last().unwrap().clone();
        let (x, y) = current;
        
        // Trouver les voisins non visités
        let mut neighbors = Vec::new();
        
        for (dx, dy) in directions.iter() {
            let nx = (x as isize + dx) as usize;
            let ny = (y as isize + dy) as usize;
            
            // Vérifier si le voisin est dans les limites du labyrinthe
            if nx > 0 && nx < width - 1 && ny > 0 && ny < height - 1 
               && !visited.contains(&(nx, ny)) {
                neighbors.push((nx, ny, *dx, *dy));
            }
        }
        
        // S'il y a des voisins non visités
        if !neighbors.is_empty() {
            // Choisir un voisin au hasard
            let (nx, ny, dx, dy) = neighbors[rng.gen_range(0..neighbors.len())];
            
            // Creuser un passage
            let wall_x = (x as isize + dx / 2) as usize;
            let wall_y = (y as isize + dy / 2) as usize;
            maze[wall_y][wall_x] = ' ';
            
            // Marquer le voisin comme visité
            maze[ny][nx] = ' ';
            visited.insert((nx, ny));
            
            // Pousser le nouveau voisin sur la pile
            stack.push((nx, ny));
        } else {
            // Retour en arrière si aucun voisin non visité
            stack.pop();
        }
    }
    
    // Définir l'entrée et la sortie
    maze[0][1] = ' '; // Entrée en haut
    maze[height - 1][width - 2] = ' '; // Sortie en bas
    
    maze
}

fn print_maze(maze: &Vec<Vec<char>>, width: usize, height: usize) {
    for y in 0..height {
        for x in 0..width {
            print!("{}", maze[y][x]);
        }
        println!();
    }
}


cargo.toml:

[dependencies]
rand = "0.8.5"

résultat:

$ cargo run
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.02s
     Running `target/debug/maze_claudeia`
# ###########################
# #         #   #         # #
# ####### # # # ### ##### # #
#   #     #   #     #   # # #
### # ############### ### # #
#   #   #           #   #   #
# ##### # ### ##### ### ### #
#       # #   #   #     #   #
########### ### # ####### ###
#   #       #   #         # #
# ### ### ### ############# #
# #   # #     #         #   #
# # ### ######### ##### ### #
#   #     #     # #   #     #
# ### ### # ### # ### ##### #
# #   #   #   # #   # #   # #
# ### # ##### # ### # # # # #
#     #       #     #   #   #
########################### #

Installer rust sous GNU_LINUX

Posted by admin on février 18, 2025
All, GNU/Linux / No Comments

Problèmes de connexion entre kodi et yatse sur un PC MX Linux

Posted by admin on janvier 04, 2025
GNU/Linux, kodi / No Comments

Après certains tests réseaux j’ai découvert que le PC sous MX Linux avait un firewall après l’installation.

Je voulais supprimer le firewall et donc supprimer les règles iptables.

J’ai donc écrit ces commandes dans un script.

https://korben.info/comment-supprimer-toutes-les-regles-iptables.html


Tags: , , ,

Des commandes linux pour les débutants

Posted by admin on décembre 26, 2024
All, GNU/Linux / No Comments

$cd /home

$ls

$cd ~

$sudo apt install nano mc


Tags:

Réinstaller grub

Posted by admin on décembre 26, 2024
All, GNU/Linux / No Comments

Update grub.
grub-mkconfig -o /boot/grub/grub.cfg


Tags: ,

Comment zipper un répertoire sous Linux ?

Posted by admin on décembre 25, 2024
All, GNU/Linux / No Comments

$zip -r <nom du fichier zip> <nom du répertoire>

L’option « -r » indique à zip d’inclure les fichiers/dossiers dans les sous-répertoires.


Tags:

termux : Linux avec Android

Posted by admin on décembre 16, 2024
android, GNU/Linux / No Comments

https://github.com/sabamdarif/termux-desktop

Télécharger une application Android « play store alternatif » F-Droid

https://f-droid.org/fr/

Installer les applications Android Termux et Termux:API depuis F-Droid

Télécharger un .apk sur ce dépôt GIT

https://github.com/termux/termux-x11/releases

pour avoir un affichage du serveur X11 sur le smartphone

s.sh:

XDG_RUNTIME_DIR=${TMPDIR} termux-x11 :1.0 &

s2.sh:

env DISPLAY=:1.0 dbus-launch –exit-with-session xfce4-session


J’ai installé MxLinux

Posted by admin on mars 06, 2024
GNU/Linux / No Comments

MxLinux est un dérivé de GNU_DEBIAN, c’est fonctionnel. J’utilise XFCE comme environnement de bureau.


Ecouter la radio avec une enceinte avec jack stereo avec le LINE_IN

Posted by admin on décembre 05, 2017
All, GNU/Linux / No Comments
Avec PulseAudio pour activer le LINE_IN avec un câble stereo MALE-MALE depuis l’enceinte

L’avantage des enceintes avec la radio c’est la recherche automatique rapide des fréquences radios FM

pacmd load-module module-loopback

XFCE est vraiment bien

Posted by admin on décembre 05, 2017
All, GNU/Linux / No Comments
C’est un environement de bureau très conçu il fonctionne avec beaucoup de distro GNU/Linux

Il est bien grâce aux plugins comme PulseAudio et les multiples espaces de travail

Le menu Whisker est bien notamment avec le la barre de recherche qui permet de chercher le nom d’un raccourci vers une application

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: