Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Jeux Técleux Septembre 2012

31 views
Skip to first unread message

September

unread,
Sep 11, 2012, 1:08:40 PM9/11/12
to
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.

GS

Frederic Bonnet

unread,
Sep 12, 2012, 11:03:22 AM9/12/12
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
}
}
}

alain

unread,
Sep 12, 2012, 12:43:02 PM9/12/12
to
Avec la puissance de clock...
On compte les vendredi dans une liste.
Le reste c'est de la présentation (et Tcl permet tout).


set lSemaine {}
set nxtFri [clock format [clock scan "Fri" -base [clock scan "Jan 01 00:00:00 2000"]]];# le premier vendredi

while {![regexp 2101 $nxtFri]} {
set nxtFri [clock format [clock scan "next Fri" -base [clock scan $nxtFri]]];# les suivants

if {[regexp [string range $nxtFri 4 6] $lSemaine]} {;# si dans le meme mois
lappend lSemaine $nxtFri ;# la liste des vendredi du mois
} else {
if {[llength $lSemaine] == 5} {
puts "5eme Vendredi: [lindex $lSemaine 4]";# la présentation
}
set lSemaine [list $nxtFri];# la liste est resetee
}
}

0 new messages