``````javascript
function departure(direction){
startTime = new Date();
//各駅ごとに到達すべき時刻(時刻表)を作成する
stationID = 0;
var stationLen = stationList[direction].length
var diagramArray = [];
var stationName;
for (var i=0; i<stationLen; i++){
var stationName = stationList[direction][i][0];
stationMinute = stationList[direction][i][1];
var targetTime = new Date(startTime.getTime()+601000stationMinute);
diagramArray.push([stationName,targetTime])
console.log(stationName,targetTime)
}
finishTime = new Date(startTime.getTime()+601000stationList[direction][stationLen-1][1]);
//1秒ごとに処理をする
timerID = setInterval(function(){gatangoton(diagramArray)},1000);
}
function start(){
var direction;
if(document.getElementById("toggle").checked){
direction = 1
}else{
direction = 0
}
departure(direction)
}
function gatangoton(diagramArray){
//1秒ごとに駅についたか判定する関数
var stationLen = diagramArray.length
var stationName = diagramArray[stationLen-1][0]
var curTime = new Date();
if (nextStationID == stationLen){
nextStationID = 0
}
var nextTime = diagramArray[nextStationID][1]
if (curTime.getTime() >= finishTime.getTime()){
//終点についたらタイマーを終える
finalArrival(stationName)
clearInterval()
}else if(curTime >= nextTime) {
nextStationID += 1;
curStationID += 1;
arrival(diagramArray,curStationID);
}
}
``````
import datetime
defmain():
Result = []
#XXXX年1月repunit日と、XXXX年11月Repunit日について一致を調べる
RepunitDelta = [datetime.timedelta(days = repunit) for repunit in (0,10,110,1110,11110,111110)]
for y inrange(1,2021):
JanOrig = datetime.date(year=y,month=1,day=1)
NovOrig = datetime.date(year=y,month=11,day=1)
for RD in RepunitDelta:#日付の差分
JanRes = JanOrig + RD
NovRes = NovOrig + RD
if JanRes.year==2020:
result = (f"{JanRes}は{JanOrig.year}年{JanOrig.month}月{RD.days+1}日")
Result.append((JanRes,result))
if NovRes.year==2020:
result = (f"{NovRes}は{NovOrig.year}年{NovOrig.month}月{RD.days+1}日")
Result.append((NovRes,result))
Result.sort(key = lambda x:x[0])
for r in Result:
print(r[1])
if __name__ == "__main__":
main()
import datetime
import ModularRepunit
defmain():
Repunits = ModularRepunit.RepDaysList400yrs()
Result = set()
#XXXX年1月repunit日と、XXXX年11月Repunit日について一致を調べる
RepunitDelta = [datetime.timedelta(days = repunit) for repunit in [i-1for i in Repunits]]
for y inrange(1600,2021):
JanOrig = datetime.date(year=y,month=1,day=1)
NovOrig = datetime.date(year=y,month=11,day=1)
for RD in RepunitDelta:
JanRes = JanOrig + RD
NovRes = NovOrig + RD
if JanRes.year==2020:
Result.add(JanRes)
if NovRes.year==2020:
Result.add(NovRes)
print(len(Result))
if __name__ == "__main__":
main()