ASCII sanat ışıkları festivali


12

Sıfır veya altı komut satırı bağımsız değişkeni alan bir programı olabildiğince az karakterle yazın

menorah
menorah YEAR MONTH DAY HOUR MINUTE SECOND

(Her iki form da desteklenmelidir. Sıfır bağımsız değişken sürümü, altı bağımsız değişken sürümünü geçerli sistem tarih ve saatiyle yerel saat diliminde çağırmaya eşdeğer olacaktır .)

ve belirtilen (Gregoryen takvimi) tarih ve saat Hanuka sırasında düşüyorsa , uygun sayıda mum yakılmış bir ASCII sanatı (veya Unicode sanatı) dokuz dallı menorah çıkın. Eğer öyleyse değil Hanuka, daha sonra çıkış tek satır sırasında. Örneğin,

~$ ./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
~$

Festivalin nci gününde N + 1 mumlar yanıyor: Merkezi şamdan mum ve sağdan sola doğru sıralanan 8 Hanuka mumundan N.

Çıktı biçiminde izin verilen varyasyonlar:

  • Kullanılmayan mumlar atlanmak yerine ışıksız olarak çizilebilir.
  • Sonucu daha estetik olarak daha hoş hale getirmek için ASCII olmayan karakterler kullanabilirsiniz. Gibi 🔥(U 1F525) yerine *. Veya yerine kutu çizim karakterleri +-|.

Bu mücadelenin amacı için, İbranice takviminde bir gün saat 18: 00'de başlayacağı düşünülebilir.

Sonuçlar, 1900 ve 2239 arasındaki Gregoryen yıllar için doğru olmalıdır.


Hanuka günbatımında Gregoryen tarihlerde başlar

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

9
Yahudi olmayanlar için (ve Yahudi takvimini nasıl hesaplayacağımızı bilmeyenler için) lütfen Hanuka'nın başlangıcının nasıl hesaplandığını açıklayın. Ayrıca mumları aydınlatma sırasını da açıklamalısınız (günde bir tane gibi görünüyor, ancak hangi mum yaktığınız önemli mi?)
Level River St

Hem sıfır hem de altı komut satırı bağımsız değişkenini desteklememiz gerekiyor mu yoksa seçim yapabilir miyiz?
lirtosiast

@ThomasKwa: Her ikisi de. Fark, sıfır bağımsız değişken sürümünün geçerli tarih ve saati kullanmasıdır.
dan04

1
kullanılmayan mumları sönük olarak çizme seçeneği, bunun dinamik ascii art kısmının sadece bir sıra geçiş yıldız işareti olduğu anlamına gelir, ki bu hiç de ilginç değildir. daha büyük ascii sanat çiziminin özellikle ilginç olduğunu düşünmüyorum.
Sparr

1
@Scir sanat bölümü sonunda bu zorluğun en zorlu kısmından uzak, gregoryenden İbranice'ye dönüşüm ve Tatiller içinde olup olmadığımızı kontrol etmek çok daha ilginç IMO
Tensibai

Yanıtlar:


3

Mathematica, 376 338 334 bayt

a=Rest@$ScriptCommandLine;b=CalendarConvert[If[a=={},Now~TimeZoneConvert~0,DateObject[FromDigits/@a,TimeZone->0]],j="Jewish"];c=Floor@DateDifference[DateObject[{b[[1,1]],9,25},CalendarType->j,TimeZone->0],b][[1]];d=If[#<=c,"*"," "]&;0<=c<8&&Print["    *
"<>{d/@{7,6,5,4},"|",d/@{3,2,1},"*
|||||||||
|||||||||
+++++++++
    |
   -+-"}]

Bir komut dosyasında çalışır.


3

R, 467 bayt

Takvim dönüşümü için kütüphane kullanılmasına izin verilip verilmediği konusunda biraz şüphe var.

library(ConvCalendar)
f='%Y %m %d %H %M %S'
g='hebrew'
s=' '
if(length(n<-scan())!=6)n=format(Sys.time(),f)
if(n[4]>17)n[3]=n[3]+1
d=strptime(paste(n,collapse=s),f)
h=as.OtherDate(d,g)
i=OtherDate(25,3,h$year,g)
j=round(difftime(d,as.Date(i),,"days"))+1
N=ifelse(j>0&j<10,(1:9)[j],0)
if(!N)write('')else{l='**||+|+'
z=matrix(strsplit(l,'')[[1]],9,7,T)
z[c(1:4,6:9),c(1,6:7)]=s
z[c(4,6),7]='-'
if(N<8)z[1:(9-N),2:4]=s
z[5,2:4]='|'
write(z,'',9,,'')}

2015 12 07 00 00 00 girişi için örnek:

    *    
    |   *
    |   |
    |   |
+++++++++
    |    
   -+-   

My eyes ........ :)
David Arenburg

1

APL (Dyalog) , 193 bayt

STDIN'den giriş ister ve STDOUT'a yazdırır.

Kutu çizim karakterleri ve gerçek bir lamba sembolü kullanır !

USING'System'
3×(c←+/i≥((⎕NEW Globalization.HebrewCalendar).(ToDateTime 73 23 18,⍨GetYear)i←⎕NEW DateTime(6↑⍎∊⍞'⎕TS')).AddDays¨⍳9)∊⍳8
¯5'⍝'
'⍝'@(10-r+5r←⍳c)⊢9s←¯5'│'
9/⍪'││┴'
s
'   ─┴─'

⎕USING←'System' .NET kullanın

⍳8 İlk sekiz ɩ ntegers
(... )∊ Boole şu bunun bir üyesi olup olmadığını için:
⍳9 ilk dokuz tamsayılar
(... ).AddDays¨ her biri için, bu günlerce ekleyin:
  ⎕NEW DateTime(... ) Yeni bir DateTime NET nesnesi değeriyle:
   ⍞'⎕TS' Geçerli için STDIN ve ifade T ime S tamp
   ε nlist (düzleştirmek)
    (altı veya yedi eleman sayısal listesini verir) o (değerlendirmek) yürütmek
   6↑ ilk altı elemanları (YAG hMS) almak
  i← olarak mağaza i(için i Temel giriş)
  (⎕NEW Globalization.HebrewCalendar).(... ) yeni bir İbrani takvimi nesnesinde:
   GetYear (İbranice) yıl olsun girdi
   3 23 18,⍨ ekleme bu (3 ay, 23 inci gün, 18th hour - Hanukkah'tan bir gece önce)
   7↑ ilk yedi öğeyi al, 0 saniye (dakika, saniye) ile doldurma  , girişin  Booleans  deposunun her birine eşit veya bu değerden sonra eşit olup olmadığına göre
   ToDateTime bu İbranice noktasını normal DateTime nesnesine dönüştürür ( için c İzahname'de)  çarpın üç tarafından  bu çizgiye halindeyken (3, yani bir sonraki, Hanuka eğer; 0, yani), çıkmak değilse
i≥
+/
c←c

¯5↑'⍝' lamba sembolünün son beş karakterini örtülü olarak yazdır (boşluklu dolgu)

¯5↑'│' orta mum sembolünün son beş karakteri (boşluklarla doldurma)
s← s ( s tem için ) olarak saklar
9↑ , ilk dokuz karakteri (boşluklarla doldurma)
 veriminden alır (yukarıdakileri alttan ayırır
'⍝'@() örtük şekilde yerleştirilmiş lambalarla yazdırın indisleri aşağıdaki gibidir:
⍳c bir çok şekilde ɩ başlamıştır Hannukah gün sayısı olarak ntegers
r← depolamak riçin ( r ange)
5≤ daha büyük olanlar için Boolean veya (orta mum) atlamak için beşe eşit
r+ endeks aralığı ekle
10-  on gelenler çıkarma (en başlayacak doğru)

⍪'││┴' bu dizeyi sütun matrisine dönüştür
9/  dokuz yatay kopyasını

s sapı dolaylı olarak yazdırmak

' ─┴─' bu dizeyi dolaylı olarak yazdır

Örnek çalışma:

      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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.