Écrivez, en aussi peu de caractères que possible, un programme qui accepte zéro ou six arguments de ligne de commande
menorah
menorah YEAR MONTH DAY HOUR MINUTE SECOND
(Les deux formulaires doivent être pris en charge. La version à zéro argument équivaut à appeler la version à six arguments avec la date et l'heure système actuelles dans le fuseau horaire local.)
et si la date et l'heure spécifiées (calendrier grégorien) tombent pendant Hanoukka , alors affichez une ménorah à neuf branches ASCII (ou art Unicode) avec le nombre approprié de bougies allumées. Si ce n'est pas pendant Hanoukka, sortez une seule nouvelle ligne. Par exemple,
~$ ./menorah 2015 12 7 0 0 0
*
| *
| |
| |
+++++++++
|
-+-
~$ ./menorah 2015 12 9 0 0 0
*
| ***
| |||
| |||
+++++++++
|
-+-
~$ ./menorah 2015 12 14 0 0 0
*
****|****
|||||||||
|||||||||
+++++++++
|
-+-
~$ ./menorah 2015 12 15 0 0 0
~$
Le Nème jour du festival, N + 1 bougies sont allumées: la bougie centrale shamash , et N des 8 bougies de Hanoukka, placées de droite à gauche.
Les variations autorisées dans le format de sortie sont:
- Les bougies inutilisées peuvent être dessinées éteintes au lieu d'être omises.
- Vous pouvez utiliser des caractères non ASCII pour rendre le résultat plus esthétique. Comme
🔥
(U + 1F525) au lieu de*
. Ou des personnages de dessin au lieu de+-|
.
Aux fins de ce défi, une journée du calendrier hébreu peut être supposée commencer à 18h00.
Les résultats doivent être corrects pour les années grégoriennes entre 1900 et 2239 inclus.
Hanoukka commence au coucher du soleil aux dates grégoriennes
1900-12-16 1901-12-05 1902-12-24 1903-12-13 1904-12-02 1905-12-22
1906-12-11 1907-11-30 1908-12-18 1909-12-07 1910-12-25 1911-12-15
1912-12-04 1913-12-23 1914-12-12 1915-12-01 1916-12-19 1917-12-09
1918-11-28 1919-12-16 1920-12-05 1921-12-25 1922-12-14 1923-12-02
1924-12-21 1925-12-11 1926-11-30 1927-12-18 1928-12-07 1929-12-26
1930-12-14 1931-12-04 1932-12-23 1933-12-12 1934-12-01 1935-12-20
1936-12-08 1937-11-28 1938-12-17 1939-12-06 1940-12-24 1941-12-14
1942-12-03 1943-12-21 1944-12-10 1945-11-29 1946-12-17 1947-12-07
1948-12-26 1949-12-15 1950-12-03 1951-12-23 1952-12-12 1953-12-01
1954-12-19 1955-12-09 1956-11-28 1957-12-17 1958-12-06 1959-12-25
1960-12-13 1961-12-02 1962-12-21 1963-12-10 1964-11-29 1965-12-18
1966-12-07 1967-12-26 1968-12-15 1969-12-04 1970-12-22 1971-12-12
1972-11-30 1973-12-19 1974-12-08 1975-11-28 1976-12-16 1977-12-04
1978-12-24 1979-12-14 1980-12-02 1981-12-20 1982-12-10 1983-11-30
1984-12-18 1985-12-07 1986-12-26 1987-12-15 1988-12-03 1989-12-22
1990-12-11 1991-12-01 1992-12-19 1993-12-08 1994-11-27 1995-12-17
1996-12-05 1997-12-23 1998-12-13 1999-12-03 2000-12-21 2001-12-09
2002-11-29 2003-12-19 2004-12-07 2005-12-25 2006-12-15 2007-12-04
2008-12-21 2009-12-11 2010-12-01 2011-12-20 2012-12-08 2013-11-27
2014-12-16 2015-12-06 2016-12-24 2017-12-12 2018-12-02 2019-12-22
2020-12-10 2021-11-28 2022-12-18 2023-12-07 2024-12-25 2025-12-14
2026-12-04 2027-12-24 2028-12-12 2029-12-01 2030-12-20 2031-12-09
2032-11-27 2033-12-16 2034-12-06 2035-12-25 2036-12-13 2037-12-02
2038-12-21 2039-12-11 2040-11-29 2041-12-17 2042-12-07 2043-12-26
2044-12-14 2045-12-03 2046-12-23 2047-12-12 2048-11-29 2049-12-19
2050-12-09 2051-11-28 2052-12-15 2053-12-05 2054-12-25 2055-12-14
2056-12-02 2057-12-21 2058-12-10 2059-11-29 2060-12-17 2061-12-07
2062-12-26 2063-12-15 2064-12-03 2065-12-22 2066-12-12 2067-12-01
2068-12-18 2069-12-08 2070-11-27 2071-12-16 2072-12-04 2073-12-24
2074-12-13 2075-12-01 2076-12-20 2077-12-10 2078-11-29 2079-12-17
2080-12-06 2081-12-26 2082-12-15 2083-12-04 2084-12-22 2085-12-11
2086-11-30 2087-12-19 2088-12-07 2089-11-27 2090-12-16 2091-12-05
2092-12-23 2093-12-13 2094-12-02 2095-12-20 2096-12-09 2097-11-29
2098-12-18 2099-12-06 2100-12-26 2101-12-16 2102-12-05 2103-12-23
2104-12-12 2105-12-02 2106-12-21 2107-12-10 2108-11-28 2109-12-17
2110-12-06 2111-12-25 2112-12-13 2113-12-03 2114-12-22 2115-12-10
2116-11-29 2117-12-19 2118-12-08 2119-12-26 2120-12-15 2121-12-04
2122-12-23 2123-12-12 2124-12-01 2125-12-21 2126-12-10 2127-11-29
2128-12-17 2129-12-06 2130-12-24 2131-12-14 2132-12-03 2133-12-22
2134-12-11 2135-11-30 2136-12-18 2137-12-07 2138-12-26 2139-12-15
2140-12-04 2141-12-23 2142-12-12 2143-12-01 2144-12-20 2145-12-09
2146-11-27 2147-12-17 2148-12-05 2149-12-24 2150-12-13 2151-12-03
2152-12-22 2153-12-11 2154-11-30 2155-12-19 2156-12-07 2157-12-25
2158-12-15 2159-12-05 2160-12-23 2161-12-12 2162-12-01 2163-12-20
2164-12-09 2165-11-28 2166-12-16 2167-12-06 2168-12-24 2169-12-13
2170-12-02 2171-12-22 2172-12-10 2173-11-28 2174-12-18 2175-12-08
2176-12-26 2177-12-14 2178-12-04 2179-12-24 2180-12-12 2181-12-01
2182-12-20 2183-12-09 2184-11-28 2185-12-17 2186-12-06 2187-12-25
2188-12-14 2189-12-03 2190-12-21 2191-12-11 2192-11-29 2193-12-17
2194-12-07 2195-12-27 2196-12-15 2197-12-03 2198-12-23 2199-12-13
2200-12-02 2201-12-20 2202-12-10 2203-11-30 2204-12-18 2205-12-07
2206-12-26 2207-12-15 2208-12-03 2209-12-22 2210-12-11 2211-12-01
2212-12-19 2213-12-08 2214-12-27 2215-12-17 2216-12-05 2217-12-23
2218-12-13 2219-12-02 2220-12-20 2221-12-09 2222-11-29 2223-12-18
2224-12-05 2225-12-25 2226-12-15 2227-12-04 2228-12-21 2229-12-11
2230-12-01 2231-12-20 2232-12-08 2233-12-27 2234-12-16 2235-12-05
2236-12-23 2237-12-12 2238-12-02 2239-12-21
Réponses:
Mathematica,
376338334 octetsFonctionne dans un script.
la source
R, 467 octets
Avec un petit doute si l'utilisation d'une bibliothèque pour la conversion du calendrier est autorisée ou non.
Exemple de saisie 2015 12 07 00 00 00:
la source
APL (Dyalog) , 193 octets
Invite à entrer depuis STDIN et imprime vers STDOUT.
Utilise des personnages de dessin de boîte et un véritable symbole de lampe !
⎕USING←'System'
Utilisez .NET⍳8
huit premiers ɩ ntegers(
...)∊
booléenne pour savoir si ce qui suit est un membre de cette:⍳9
neuf premiers entiers(
...).AddDays¨
pour chacun, ajouter que plusieurs jours à:⎕NEW DateTime(
...)
un nouvel objet .NET DateTime avec la valeur de:⍞'⎕TS'
STDIN et d' expression pour le courant T ime S TAMP∊
ε nlist (Aplatir)⍎
execute (évaluer) qui (donne la liste de six ou numérique à sept éléments)6↑
prendre les six premiers éléments (AMJ hms)i←
magasin commei
(pour i nput)(⎕NEW Globalization.HebrewCalendar).(
...)
dans un nouvel objet calendrier hébraïque:GetYear
obtenir l'année ( en hébreu) des entrées les3 23 18,⍨
ajoutent (3 mois, 23 e jour, 18e heure - une nuit avant Hanoukka)7↑
prenez les sept premiers éléments, le remplissage avec 0s (minutes, secondes)ToDateTime
convertit ce point hébreu dans le temps en un objet DateTime normali≥
booléen, que l'entrée soit égale ou postérieure à chacune de ces+/
sommes, la banque booléennec←
stocke commec
( pour c ount)3×
multiplier par trois→
aller à cette ligne (3, c'est-à-dire ensuite, si Hanoukka; 0, c'est-à-dire quitter, sinon)¯5↑'⍝'
imprimer implicitement les cinq derniers caractères du symbole de la lampe (remplissage avec des espaces)¯5↑'│'
les cinq derniers caractères du symbole de la bougie du milieu (rembourrage avec des espaces) sonts←
stockés comme s (pour s tem) en9↑
prennent les neuf premiers caractères de ce que (le rembourrage avec des espaces)⊢
donne (sépare ce qui précède du dessous'⍝'@(
...)
imprime implicitement avec des lampes placées au indices suivants:⍳c
autant de ɩ ntegers que le nombre de jours de Hanoukka commencés stockésr←
dansr
(pour la r ange)5≤
Booléens pour ceux supérieurs ou égaux à cinq (pour sauter la bougie du milieu)r+
ajouter à la gamme des indices10-
soustraire ceux de dix (pour commencer à la droite)⍪'││┴'
faire de cette chaîne dans une matrice de colonne9/
imprimer implicitement neuf copies horizontales de cettes
imprimer implicitement la tige' ─┴─'
imprimer implicitement cette chaîneExemple d'exécution:
la source