Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud
Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud
Al Museo Alfa Romeo di Arese, Nutanix ha riunito clienti, partner ed esperti per .Next On Tour Italia e per mostrare come l’infrastruttura hybrid multicloud possa diventare il fondamento dell’innovazione, con una piattaforma capace di unificare applicazioni tradizionali, moderne architetture cloud-native e nuovi scenari basati sull’intelligenza artificiale
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti
Il Lenovo LOQ 15i Gen 10 (15IRX10) offre prestazioni convincenti grazie al Core i7-13650HX e alla RTX 5060 Laptop a 100W, mantenendo un prezzo competitivo tra 1100 e 1300 euro. Costruzione solida, buon display e ampia espandibilità lo rendono una scelta equilibrata per chi cerca un notebook gaming accessibile ma moderno.
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Abbiamo giocato a lungo a Battlefield 6, abbiamo provato tutte le modalità multiplayer, Redsec, e le numerose personalizzazioni. In sintesi, ci siamo concentrati su ogni aspetto del titolo per comprendere al meglio uno degli FPS più ambiziosi della storia dei videogiochi e, dopo quasi due mesi, abbiamo tirato le somme. In questo articolo, condividiamo con voi tutto ciò che è Battlefield 6, un gioco che, a nostro avviso, rappresenta esattamente ciò che questo genere attendeva da tempo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-05-2009, 19:38   #1
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
[Vari] Contest 13: Date

Quanti lunedi' ci sono in tutti i Febbraio tra gli anni il 1900 e il 2100 compresi?

Occhio ai bisestili, che sono tutti gli anni divisibili per 4.
Ma non quelli che terminano per 00
Ma se invece il numero che termina per 00 e' divisibile per 400, allora e' di nuovo bisestile (Come il 2000).
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2009, 19:56   #2
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
811

Segue il codice usato per la soluzione:
Codice:
#light
open System

let countMondays year = [1..DateTime.DaysInMonth(year,2)] |> Seq.filter(fun d -> DateTime(year, 2, d).DayOfWeek = DayOfWeek.Monday) |> Seq.length
[1900..2100] |> Seq.map(countMondays) |> Seq.fold(+) 0

Ultima modifica di !k-0t1c! : 12-05-2009 alle 01:16. Motivo: aggiornato per usare gli helpers di DateTime
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2009, 20:07   #3
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
cut
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2009, 20:20   #4
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
puoi spiegarmi quel "cut"?
Se ho sbagliato a postare pubblicamente la soluzione chiedo scusa e spero di aver fatto ammenda in tempo utile, diversamente dimmelo e ripristinerò il post sopra.
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2009, 20:47   #5
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
C'è già un contest 12:

Contest 12

Se è un questione di superstizione, puoi fare come D'Annunzio:

Tratto da "1912 + 1" di Leonardo Sciascia:

Quote:
Non so se per tutto l'anno 1913: ma almeno una volta,
dedicando un suo libro, D'Annunzio scrisse "1912 + 1":
per superstizione sua o della persona cui lo dedicava
o di entrambi.
...
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2009, 23:04   #6
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Soluzione quick'n'dirty in factor...non è proprio il massimo dell'eleganza, ma stasera sono pigro...
Codice:
USING: math math.ranges make sequences kernel calendar fry locals
prettyprint ;
IN: contest12

:: get-timestamps ( year -- seq )
    year 2 1 <date> days-in-month
    [ [ 1+ year 2 pick <date> , drop ] each ] { } make ;

: how-many-mondays? ( seq -- n )
    [ day-of-week day-name "Monday" = ] filter length ;

: contest12 ( -- )
    1900 2100 [a,b]
    [ get-timestamps how-many-mondays? ] map sum . ;
@!k-0t1c!: cos'è? F#? Fico!
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2009, 23:39   #7
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da shinya Guarda i messaggi
Soluzione quick'n'dirty in factor...non è proprio il massimo dell'eleganza, ma stasera sono pigro...
Codice:
USING: math math.ranges make sequences kernel calendar fry locals
prettyprint ;
IN: contest12

:: get-timestamps ( year -- seq )
    year 2 1 <date> days-in-month
    [ [ 1+ year 2 pick <date> , drop ] each ] { } make ;

: how-many-mondays? ( seq -- n )
    [ day-of-week day-name "Monday" = ] filter length ;

: contest12 ( -- )
    1900 2100 [a,b]
    [ get-timestamps how-many-mondays? ] map sum . ;
@!k-0t1c!: cos'è? F#? Fico!
si F#, quoto!
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 00:02   #8
pierosa
Member
 
Iscritto dal: Jan 2007
Messaggi: 189
Aggiungo una soluzione in ruby
Codice:
require 'date'
def is_leap?(year)
  ((year % 4 == 0) && ((year % 400 == 0) || !(year % 100 == 0))) 
end

def mondays(start_y, end_y)  
  mondays = (end_y-start_y+1)*4
  start_y.step(end_y){|year| mondays += 1 if (is_leap?(year) && Date.new(year,2,1).wday == 1)}
  mondays
end

puts mondays(1900, 2100)
pierosa è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 00:15   #9
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
Quote:
Originariamente inviato da !k-0t1c! Guarda i messaggi
811

Segue il codice usato per la soluzione:
Codice:
#light

open System

let countMondays year =
    let isMonday day =
        let date = DateTime.Parse(sprintf "%i/02/%i" day year)
        date.DayOfWeek = DayOfWeek.Monday
    let febDays = if year % 4 = 0 && (year % 400 = 0 || year % 100 <> 0) then 29 else 28
    [1..febDays] |> Seq.filter(isMonday) |> Seq.length

[1900..2100] |> Seq.map(countMondays) |> Seq.fold(+) 0
non potevi usare DateTime.IsLeapYear (int) dove il parametro è l'anno?
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 00:26   #10
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Quote:
Originariamente inviato da shinya Guarda i messaggi
@!k-0t1c!: cos'è? F#? Fico!
Sì, F#
Non è niente male, corre veloce quanto C# e si integra alla perfezione con .NET Comunque a giudicare dalla tua soluzione non sono l'unico che apprezza linguaggi quantomeno un po' "esotici"
Quote:
Originariamente inviato da Kralizek Guarda i messaggi
non potevi usare DateTime.IsLeapYear (int) dove il parametro è l'anno?
No, perché DateTime.IsLeapYear avrebbe ritornato true per 1900 e 2100 mentre nella definizione di bisestile data dal problema solo per nessuno di quei due andava considerato tale (lo so, ai fini della soluzione è irrilevante visto che ciascuno ha comunque 4 lunedì in febbraio, tuttavia per scrupolo ho preferito implementare la specifica).
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 00:35   #11
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da !k-0t1c! Guarda i messaggi
Comunque a giudicare dalla tua soluzione non sono l'unico che apprezza linguaggi quantomeno un po' "esotici"
E' Factor E' un linguaggio concatenativo. Fai conto lisp... ma al contrario e senza parentesi :P
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 00:46   #12
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da !k-0t1c! Guarda i messaggi
puoi spiegarmi quel "cut"?
Se ho sbagliato a postare pubblicamente la soluzione chiedo scusa e spero di aver fatto ammenda in tempo utile, diversamente dimmelo e ripristinerò il post sopra.
Nono, ero io che avevo sbagliato. Pensavo di aver postato una errata definizione di bisestile, ma e' giusta.

Quote:
Originariamente inviato da Vincenzo1968 Guarda i messaggi
C'è già un contest 12:
Mannaggia, se passa qualcuno a correggere in Contest 13...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 00:46   #13
bio82
Senior Member
 
Iscritto dal: Dec 2007
Messaggi: 1525
che bello un problema che riesco a risolvere anche io!!!!!!

Codice:
        For i = inizio To fine
            If i Mod 400 = 0 Then
                Dim data As Date = "01/02/" & i
                If data.DayOfWeek = DayOfWeek.Monday Then
                    conta += 1
                End If
            ElseIf Right(i.ToString, 2) = "00" Then
            ElseIf i Mod 4 = 0 Then
                Dim data As Date = "01/02/" & i
                If data.DayOfWeek = DayOfWeek.Monday Then
                    conta += 1
                End If
            End If
            conta += 4
        Next
come soluzione funziona, l'unico buco è l'anno 0 dove bisognerebbe fare un caso a parte

cmq ho paura che arrivi un inghippo per cui le nostre soluzioni diventano obsolete...

bio
bio82 è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 00:52   #14
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da !k-0t1c! Guarda i messaggi
Sì, F#
Non è niente male, corre veloce quanto C# e si integra alla perfezione con .NET Comunque a giudicare dalla tua soluzione non sono l'unico che apprezza linguaggi quantomeno un po' "esotici"

No, perché DateTime.IsLeapYear avrebbe ritornato true per 1900 e 2100 mentre nella definizione di bisestile data dal problema solo per nessuno di quei due andava considerato tale (lo so, ai fini della soluzione è irrilevante visto che ciascuno ha comunque 4 lunedì in febbraio, tuttavia per scrupolo ho preferito implementare la specifica).
La specifica "dovrebbe" essere la definzione corretta di bisestile.
Se la IsLeapYear e' implementata correttamente dovrebbe tornare false per 1900 e 2100
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 01:00   #15
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Per ora in C# butto cosi'.

Codice:
static void Main(string[] args)
{
    var mondays = Enumerable.Range(1900, 2100 - 1900 + 1)
                            .Sum(year =>
                                    Enumerable.Range(1, DateTime.DaysInMonth(year, 2))
                                              .Count(day => new DateTime(year, 2, day).DayOfWeek == DayOfWeek.Monday)
                                );

    Console.Write(mondays);
    Console.ReadKey();            
}
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 01:02   #16
bio82
Senior Member
 
Iscritto dal: Dec 2007
Messaggi: 1525
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
La specifica "dovrebbe" essere la definzione corretta di bisestile.
Se la IsLeapYear e' implementata correttamente dovrebbe tornare false per 1900 e 2100
dettomi questo, ti confermo che in vb IsLeapYear ritorna falso al 1900 (e agli altri)..

il mio codice varia in:

Codice:
        For i = inizio To fine
            If DateTime.IsLeapYear(i) Then
                Dim data As Date = "01/02/" & i
                If Data.DayOfWeek = DayOfWeek.Monday Then conta += 1
            End If
            conta += 4
        Next
risultato corretto ed uguale al codice di che postato prima

Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Per ora in C# butto cosi'.
devo dire che a complicarti la vita fai paura ... è più prestante immagino (tralasciando questo caso specifico)...

bio

Ultima modifica di bio82 : 12-05-2009 alle 01:04.
bio82 è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 01:03   #17
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
ma è giusto 811?
a me esce un pò di meno..
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 01:08   #18
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Anche a me salta fuori 811.
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 01:08   #19
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da bio82 Guarda i messaggi
devo dire che a complicarti la vita fai paura ... è più prestante immagino (tralasciando questo caso specifico)...

bio
Si', e' vero, e' brutto. PRovo cosi'

Codice:
static void Main(string[] args)
{           
    var mon = from year in Enumerable.Range(1900, 2100 - 1900 + 1)
              let DaysInFeb = DateTime.DaysInMonth(year, 2)
                  from day in Enumerable.Range(1, DaysInFeb)
                  let dayday = new DateTime(year, 2, day)
                  where dayday.DayOfWeek == DayOfWeek.Monday
                  select dayday;

    int nums = mon.Count();

    Console.WriteLine(nums);
    Console.ReadKey();      

}
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2009, 01:09   #20
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ma è giusto 811?
a me esce un pò di meno..
Hai incluso il 2100?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud Nutanix: innovazione, semplicità e IA al ...
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il n...
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
Il telescopio spaziale James Webb ha ril...
ESA: budget di 22,32 miliardi di euro pe...
Il rover Yutu-2 della missione cinese Ch...
Le pubblicità del frigorifero man...
Perso il segnale della sonda spaziale NA...
Una Xiaomi SU7 ha finito il suo parchegg...
Decine di associazioni contro i data cen...
Dongfeng batte Toyota e BYD: il suo moto...
Oltre NVIDIA: i server di Red Hat AI acc...
Grok diventa navigatore Tesla: Musk prom...
Broadcom/VMware e Siemens continuano a l...
NIO lancia il brand Firefly anche in Gre...
Trump annuncia una legge nazionale sull'...
Intel Arc B770: la scheda appare in un d...
Le Big dell'AI e Linux Foundation insiem...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:36.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v