introduction
Un clocher sonnera toutes les heures, toutes les heures, n
avec n
l'heure actuelle sur une horloge de 12 heures.
Par exemple, une cloche sonnera 5 fois à 17h et 10 fois à 10h.
Tâche
Donné deux fois dans un format approprié, affichez le nombre de sonneries, y compris les heures de début et de fin
Exemples
"10am-12pm"
10+11+12= 33
[01:00, 05:00]
1+2+3+4+5 = 15
[11, 15]
11+12+1+2+3 = 29
[10:00pm, 10:00am]
10+11+12+1+2+3+4+5+6+7+8+9+10 = 88
Si le début est le même que la fin, il vous suffit de sortir le nombre de carillons pour cette heure:
[5pm, 5pm]
5 = 5
Comme vous pouvez le voir, vous pouvez choisir une méthode d'entrée, mais la sortie doit être un entier seul (ou une alternative acceptable) les sauts de ligne / début et les espaces sont autorisés.
Remarque:
- les intrants peuvent s'étendre de l'après-midi d'un jour au matin du lendemain.
- la différence entre les deux temps ne sera jamais supérieure à 24 heures.
- l'entrée est flexible tant que vous indiquez clairement le format de votre entrée.
- votre entrée doit avoir une distinction claire entre AM et PM.
pm
àam
, passant ainsi à un 2e jour.Réponses:
JavaScript (ES6),
3835 octetsAjoute récursivement le nombre actuel de sonneries au total. Appelé comme
f(11,15)
; minuit est représenté par24
. J'ai obtenu une partie de l'~-
astuce de la réponse Python de @ xnor .Extrait de test
Afficher l'extrait de code
Version non récursive (Firefox 30+), 56 octets
Équivalent à la fonction ES6 suivante:
la source
Python 2, 46 octets
Basé sur ma réponse JS. La formule récursive f pour la solution est définie comme suit:
la source
Python 2,
Équivalent à5954 octetsla source
a=
pièce.a=
. Il est permis d'être un pur lambda.y%24
.05AB1E , 13 octets
Avec beaucoup d'aide d' Emigna .
Utilise l' encodage CP-1252 . Essayez-le en ligne!
la source
Python, 42 octets
Une fonction récursive qui prend deux nombres de 0 à 23. L'extension du
~x
's à-x-1
donneL'expression
(a+1)%12+1
convertit un temps en nombre de sonneries1
en12
. Ensuite, la borne inférieure est incrémentée modulo 24 et la fonction pour le résultat récursif est ajoutée. Autrement dit, sauf si l'heure actuelle est l'heure de fin, auquel cas nous nous arrêtons.J'ai plutôt essayé d'écrire une solution purement arithmétique, mais jusqu'à présent, je n'ai trouvé que des expressions longues et désordonnées.
la source
or
. Joli!Haskell,
4843 octetsL'utilisation est
startHour % endHour
, avec les deux entrées données au format 24 heures.edit: ajout de l'amélioration de @ xnor, économisant 5 octets
la source
e
quande<s
, vous pouvez filtrer la plages%e=sum[mod(x-1)12+1|x<-[s..e+24],x<=e||s>e]
. Elle enregistre ensuite un octet à décalage x par 1:s%e=sum[mod x 12+1|x<-[s-1..e+23],x<e||s>e]
.C #, 73 octets
Entrée acceptable: entiers dans la plage [0,23].
Cette solution n'utilise pas LINQ.
Programme complet avec cas de test:
la source
Gelée ,
17 16 1514 octetsTryItOnline
Comment?
la source
MATL , 14 octets
Le format d'entrée est comme dans le troisième exemple du défi, c'est-à-dire deux nombres au format 24 heures.
Essayez-le en ligne!
Explication
Prenez des entrées
22
, à10
titre d'exemple.la source
PHP, 90 octets
Format d'entrée «[1,24]» entre 1 et 24
Dans ce défi que je déteste pourquoi PHP lâche contre d'autres langages. Je préfère montrer toutes mes idées. Peut-être qu'un autre PHP Crack trouve une solution plus courte.
99 octets
113 octets par chemin avec min et max
bien cette idée folle fonctionne avec un tableau 149 octets remplit le tableau
$y[0]
et$y[1]
si$_GET["b"][0]<=$_GET["b"][1]
si$y[1]
est quenull
nous pouvons résumer ce tableauarray_diff_key($y[0],array_slice($y[0],$b[1],$b[0]-$b[1]-1,1))
Cela pourrait être joué sur 124 octets
Maintenant, à ce stade, nous pouvons réduire le tableau avec seulement deux pouces 101 octets faire 2 sommes
$x[0]
et$x[1]
list($f,$g)=$_GET[b];
si
$v=($f>$g
alors ajouter de la valeur à$x[$i<$f&$i>$g]
autre ajouter de la valeur à$x[$i>=$f&$i<=$g]
la sortie sera trouvé par casecho$x[!$v];
Après cela, j'ai trouvé un moyen de calculer le résultat directement 112 octets
récursif 103 octets
la source
PHP, 69 octets
L'extraction de la liste a été inspirée par la réponse de Jörg Hülsermann, mais le reste des similitudes est le résultat d'une évolution convergente et parce qu'elle est beaucoup plus courte et que les conditions de la boucle sont suffisamment différentes, je la poste en tant que réponse distincte.
Prend l'entrée en tant que 24 heures (bien avec 0 ou 24). Courez comme:
la source
$i>$a?24:0
a la même longueur que($i>$a)*24
wiki.php.net/rfc/short_list_syntax Peut-être que vous voulez utiliser la syntaxe de liste courte qui est nouvelle dans 7.1[$x,$i,$a]=$argv;
-2 octets Avant je n'ai pas testé que je ne l'utiliserais pas. Maintenant, je vais plus me détester que je n'ai pas trouvé ça.Java,
72717876 octetsModifier :
e
/clock
est initialisé.Non golfé:
la source
a
, etd
, etb
? La méthode complète est logique, mais à moins que je manque sérieusement quelque chose, je pense que vous devez regarder à nouveau votre lambda golfé et essayer de l'exécuter. Pour plus de golf:(time+1)
peut devenir++time
.a+=a?
devrait l'êtreb+=a?
. En outre, vous pouvezwhile
jouer au golf de 2 octets en changeant le en un sans corpsfor
comme ceci:(a,b,c,d)->{int e;b+=a?12:0;d+=c?12:0;for(;b!=d;e+=b%12,b=++b%24);return e;}
QBIC ,
9047 octetsVoici donc la réponse en n'imprimant que le nombre total de sonneries:
L'entrée est dans la plage
1-24
;a
etb
sont les entrées (::
dans le code),c
garde une trace de am / pm,d
est le nombre total de sonneries. Lorsque nous avons décompté toutes les heures,_Xd
met fin au programme et imprimed
dans le processus.OK, j'ai mal compris la question et j'ai pensé que le
1+2+3...=
texte faisait partie de la sortie, alors j'ai écrit ceci:Maintenant, je vais coder la bonne réponse ...
la source
Pyth - 11 octets
Suite de tests .
la source
23, 1
sorties144
quand elles devraient sortir24
. (Un tel cas devrait, bien sûr, être dans les tests!)C #, 76 octets
la source
a=23
etb=0
semble être l'exemple le plus évident.Perl, 36 octets
Comprend +1 pour
-p
Donnez l'heure de début et de fin au format 24 heures sur une ligne chacun sur STDIN:
toll.pl
:la source
Java 7, 64 octets
Méthode récursive basée sur la réponse Python 2 de @ETHproductions . Utilise une entrée d'horloge de 24 heures.
Code non testé et testé:
Essayez-le ici.
Sortie:
la source
Lot,
16891 octetsModifier: 77 octets enregistrés en passant à un formulaire fermé pour la réponse.
%1
et%2
sont les deux paramètres de ligne de commande@
Désactiver la valeur par défaut de Batch qui consiste à faire écho à la commandecmd/c
Tromper le lot en imprimant immédiatement le résultat du calculset/a
Effectuer un calcul numériquex=(%1+23)%%24,
Normaliser l'heure de début comme étant le nombre d'heures écoulées depuis 1 heure du matin (1 heure fonctionnerait également, mais 11 n'est pas inférieur à 23)y=x+(%2+24-%1)%%24,
Normaliser l'heure de fin pour être en avance sur l'heure de début, passer au jour suivant si nécessairez=y%%12+1,
Nombre de cloches frappées à l'heure de fin(y/12-x/12)*78+
Nombre de cloches en raison de demi-journées supplémentairesz*~-z/2-
Nombre de cloches de 1 heure à l'heure de fin incluse(x%%=12)
Un de moins que le nombre de cloches frappées à l'heure de départ*-~x/2
Nombre de cloches qui auraient été frappées de 1 heure à l'heure de départ, mais sans compter l'heure de départla source
C, 56 octets
la source
> <> , 48 + 2 = 50 octets
L'entrée devrait être présente sur la pile au démarrage du programme, donc +2 octets pour l'
-v
indicateur. L'entrée est deux entiers spécifiant l'heure sur une horloge de 24 heures, donc10am - 10pm
serait donnée comme10 22
.Essayez-le en ligne!
la source
Cubix ,
4544 octets1 octet enregistré grâce à @ETHproductions
Ma première incursion dans Cubix ...
Ou, cubifié:
Vous pouvez l'essayer sur l' interprète en ligne . L'entrée est au format 24 heures, avec l'heure de fin en premier. Par exemple, de 17 h à 1 h, l'entrée doit être
1 17
.Version précédente, 45 octets:
la source
)$424tU4OI0Iuq;;-!^;^%&21u+rr;ss!;sqU>&%r$@;
Qbasic, 112 octets
la source
Python, 73 octets
Il serait tellement plus court si nous ne devions pas soutenir
pm
àam
. J'utilise la récursivité pour le supporter.Essayez-le en ligne
Sans prise en charge
pm
deam
(45 octets):la source