Accueil > > > REMPLIR UN TABLEAU EN SPIRALE
REMPLIR UN TABLEAU EN SPIRALE
Information sur la source
Description
Suite à un post (http://www.javascriptfr.com/infomsg_TABLEAU-SPIRA LE_1039112.aspx ), je me suis penché sur la question du remplissage d'un tableau en spirale : Imaginons donc un carré de 5*5, cela devrait donner ceci en résultat finale 0 1 2 3 4 15 16 17 18 5 14 23 24 19 6 13 22 21 20 7 12 11 10 9 8
Source
- <script language="javascript">
- <!--
- tableauspirale(5);
- function tableauspirale(vartaille){
- if (vartaille>1){
- var taille=parseInt(vartaille);
- var nbr=0;
- var damier=new Array(taille);
- var nbrcarre = parseInt(taille / 2);
- //initialisation du damier
- for (var j=0;j<damier.length;j++){damier[j]= new Array(damier.length);}
- for (var j=0;j<damier.length;j++)
- {
- for (var x=0;x<damier[j].length;x++){damier[j][x]=0;}
- }
- //initialisation des limites
- var premiereligne=0;
- var dernierecolonne=taille -1 ;
- var derniereligne=taille - 1;
- var premierecolonne=0;
- for(var startcarre=1;startcarre<nbrcarre+1;startcarre++){
- //construction de la première ligne
- for(var j=premiereligne;j<dernierecolonne;j++)
- {
- damier[premiereligne][j]=nbr;
- nbr++;
- }
- //affichage
- affichagetableau(damier);
- //construction de la dernière colonne
- for(var j=premiereligne;j<derniereligne;j++)
- {
- damier[j][dernierecolonne]=nbr;
- nbr++;
- }
- //affichage
- affichagetableau(damier);
- //construction de la dernière ligne
- for(var j=dernierecolonne;j>premierecolonne;j--)
- {
- damier[derniereligne][j]=nbr;
- nbr++;
- }
- //affichage
- affichagetableau(damier);
- //construction de la première colonne
- for(var j=derniereligne;j>premiereligne;j--)
- {
- damier[j][premierecolonne]=nbr;
- nbr++;
- }
- //affichage
- affichagetableau(damier);
- //incrementation pour donner les limites du carre suivant
- premiereligne += 1;
- dernierecolonne -= 1;
- derniereligne -= 1;
- premierecolonne += 1;
- }
- //si la taille du carré est un nombre impaire alors on remplit le centre du tableau avec la dernière valeur de nbr
- if (taille%2){
- damier[premiereligne][premiereligne]=nbr;
- //affichage
- affichagetableau(damier);
- }
-
- }
- }
- function affichagetableau(damier){
- //affichage
- document.write("<table>");
- for (var j=0;j<damier.length;j++){
- document.write("<tr>");
- for (var x=0;x<damier[j].length;x++){
- document.write("<td>");
- document.write(damier[j][x]);
- document.write("</td>");
- }
- document.write("</tr>");
- }
- document.write("</table>");
- document.write("<br>");
- }
- //-->
- </script>
<script language="javascript">
<!--
tableauspirale(5);
function tableauspirale(vartaille){
if (vartaille>1){
var taille=parseInt(vartaille);
var nbr=0;
var damier=new Array(taille);
var nbrcarre = parseInt(taille / 2);
//initialisation du damier
for (var j=0;j<damier.length;j++){damier[j]= new Array(damier.length);}
for (var j=0;j<damier.length;j++)
{
for (var x=0;x<damier[j].length;x++){damier[j][x]=0;}
}
//initialisation des limites
var premiereligne=0;
var dernierecolonne=taille -1 ;
var derniereligne=taille - 1;
var premierecolonne=0;
for(var startcarre=1;startcarre<nbrcarre+1;startcarre++){
//construction de la première ligne
for(var j=premiereligne;j<dernierecolonne;j++)
{
damier[premiereligne][j]=nbr;
nbr++;
}
//affichage
affichagetableau(damier);
//construction de la dernière colonne
for(var j=premiereligne;j<derniereligne;j++)
{
damier[j][dernierecolonne]=nbr;
nbr++;
}
//affichage
affichagetableau(damier);
//construction de la dernière ligne
for(var j=dernierecolonne;j>premierecolonne;j--)
{
damier[derniereligne][j]=nbr;
nbr++;
}
//affichage
affichagetableau(damier);
//construction de la première colonne
for(var j=derniereligne;j>premiereligne;j--)
{
damier[j][premierecolonne]=nbr;
nbr++;
}
//affichage
affichagetableau(damier);
//incrementation pour donner les limites du carre suivant
premiereligne += 1;
dernierecolonne -= 1;
derniereligne -= 1;
premierecolonne += 1;
}
//si la taille du carré est un nombre impaire alors on remplit le centre du tableau avec la dernière valeur de nbr
if (taille%2){
damier[premiereligne][premiereligne]=nbr;
//affichage
affichagetableau(damier);
}
}
}
function affichagetableau(damier){
//affichage
document.write("<table>");
for (var j=0;j<damier.length;j++){
document.write("<tr>");
for (var x=0;x<damier[j].length;x++){
document.write("<td>");
document.write(damier[j][x]);
document.write("</td>");
}
document.write("</tr>");
}
document.write("</table>");
document.write("<br>");
}
//-->
</script>
Conclusion
Code à placer dans le body. J'ai placé la fonction d'affichage du tableau tout au long du procédé pour que vous puissiez voir les différentes étapes de construction ! Attention évitez les grandes tailles de carré si vous laissez l'affichage actif.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Remplir un tableau en fonction d'un SELECT [ par simsai ]
Bonjour,mon probleme: je ne vois pas comment faire pour remplir le contenu d'un tableau en fonction de la selection de mon select?J'ai une page que j'
Remplir un tableau grace a une base de donnée [ par adakick ]
Bonjour, je voudrai remplir un tableau avec des données présentes en base de données.Si vous savez faire, sa m'aiderai bien.Merci.
tableau spirale [ par c_raf ]
Es ce que quelqu'un aurait une idée pour réaliser ce genre de tableau en javascript??? je débute et je n'y arrive pas dutout...<img src="http://www.ja
tableau dynamic [ par kbinfo ]
Comment remplir un tableau a partir d'un formulaire html on doit remplir ce tableau dynamiquement
Remplir Tableau à partir formulaire SANS PHP [ par danvy ]
bonjour, voila j'expose mon probleme:j'ai un tableau en colonne les personnes et en lignes les jours de la semaine.Ensuite par menu deroulant, j'
Remplir une liste deroulante avec un tableau [ par grandyaka54 ]
Bonjour, Je souhaite remplir une liste deroulante avec l'aide d'un tableau lors du demarrage de la page. Etant debutant, je n'arrive pas a remplir la
Empêcher l'élargissement d'un tableau??? [ par zut69 ]
<td id="HB_Focus_Element" unselecta
Effacer un élément quelconque d'un tableau Array, et changé l'indice de tous les élements suivants (donc diminuer la taille du tableau) [ par sagat06 ]
Bonjour à tous,je suis toujours sur un projet qui me fait perdre la boule (à chaque problème résolu, un nouveau apparait !!).Bref, cette fois-ci, j'ai
Tableau dynamique [ par alia10 ]
Salut,J'aimerais que vous m'aidez à créer des tableaux dynamiques en HTML: ajouter, modifier et supprimer des lignes.Merci d'avance!
Boucle sur un script Ajax [ par caviar ]
Salut à vous ô forts du JS...Je suis une fois de plus en train de galérer... enfin cette fois ci je crois que c'est enfin sur un problème digne de ce
|
Derniers Blogs
[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : CONVERSIONRE : CONVERSION par peter2010
Cliquez pour lire la suite par peter2010
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|