• [^] # Re: awk '{system("date +%s%N")}' c'est long

    Posté par (site web personnel) . En réponse au journal TapTempo contest : un peu moins d'octets en Awk. Évalué à 1.

    Je transmet une réponse de Loïc, auteur de la solution Awk originelle :

    ts "%s" donne une seconde de résolution. Cela ne suffit pas.

    Heureusement, ts accepte aussi "%.s" pour une partie fractionnaire (un caractère de plus). Et pas besoin des guillemets : deux caractères de moins. Aussi, avec des secondes plutôt que des nanosecondes, le facteur 6e10 dans le programme AWK devient 60 : encore deux caractères de moins.

    La solution prend alors 72 caractères :

    $ ts %.s|awk '{t[++k]=0ドル}k>5{r=k-5}k>1{printf"%i",60*(k-r-1)/(0ドル-t[r+1])}'

    Si 100 caractères est la limite, on peut se permettre d'ajouter la remise à zéro après 5 secondes sans taper, comme dans le projet initial de mzf, et utiliser son format de sortie ("Tempo : %i bpm") :

    ts %.s|awk '0ドル-t[k]>5{k=r=0}{t[++k]=0ドル}k>5{r=k-5}k>1{printf"Tempo : %i bpm",60*(k-r-1)/(0ドル-t[r+1])}'
    100 caractères. Pile poil. Quelqu'un trouvera-t-il mieux ?