Frederic Bonnet
unread,Sep 12, 2012, 11:03:22 AM9/12/12You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Le 11/09/2012 19:08, September a �crit :
> Hello,
>
> Un jeu t�cleux pour septembre :
>
> Ecrire un code qui affiche toutes les ann�es comprises entre 2000 et 2100 qui comportent un ou plusieurs mois avec 5 vendredi.
R�ponse rapide :-)
for {set year 2000} {$year <= 2100} {incr year} {puts $year}
A ma connaissance toutes les ann�es comportent au moins un mois avec 5
vendredis.
R�ponse plus s�rieuse, avec la puissance de [clock] :
for {set year 2000} {$year <= 2100} {incr year} {
# Trouve le premier vendredi de l'ann�e.
# - Premier janvier midi
set date [clock scan "01/01/$year 12:00:00"]
# - Jour de la semaine (1=lundi, 5=vendredi, 7=dimanche)
set weekday [clock format $date -format %u]
if {$weekday > 5} {
set date [clock add $date [expr {12-$weekday}] days]
} else {
set date [clock add $date [expr {5-$weekday}] days]
}
# It�re sur tous les vendredis de l'ann�e.
set month 01
set nb 1
while {true} {
set date [clock add $date 1 week]
if {[clock format $date -format %Y] ne $year} {
# Nouvelle ann�e.
break
}
set month2 [clock format $date -format %m]
if {$month2 ne $month} {
# Nouveau mois.
set month $month2
set nb 1
continue
}
# Un vendredi suppl�mentaire
incr nb
if {$nb == 5} {
# Trouv� !
puts $year
break
}
}
}