Tulis program yang mencatat jumlah hari berturut-turut yang telah dijalankan.
Hari direset pada tengah malam (waktu lokal komputer tempat program dijalankan).
Jika ada hari di mana program tidak berjalan, penghitung diatur ulang ke nol.
Setiap kali program dijalankan, penghitung akan naik satu hari jika itu adalah pertama kalinya program dijalankan hari itu. Ini berarti bahwa pertama kali program dijalankan, itu harus mengatakan, "Anda memiliki 1 hari beruntun!"
Output dari program ini adalah dalam bentuk: You have a [streak_length] day streak!
Anda diizinkan untuk menyimpan data secara eksternal atau memodifikasi kode sumber –– pilihan Anda.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
Jawaban:
Pesta,
92,90, 82 byteGolf
EDIT
Bagaimana itu bekerja !
Setiap kali Anda meluncurkannya akan menambahkan baris dengan tanggal saat ini ke file h , misalnya:
Kemudian akan digunakan
uniq
untuk menyaring duplikat (yaitu beberapa peluncuran, pada hari yang sama), dan menghitung garis untuk mendapatkan panjang garis .Untuk mengatur ulang goresan , itu akan menangkap untuk 'kemarin' di h , dan memotongnya jika tidak ditemukan.
sumber
Bash, 102 byte
Peringatan, jangan tidak berjalan di setiap folder yang Anda pedulikan. Itu menghapus file yang tidak diakses pada hari terakhir di direktori kerja.
Menggunakan file
a
untuk menyimpan data, menggunakan cap waktu yang diakses / dimodifikasi.sumber
Goruby, 85 Bytes
Jalankan dengan bendera juru bahasa
-rdate
.Ini bekerja dengan menyimpan file baru untuk setiap hari yang diminta, kemudian menghitung jumlah file berturut-turut mundur untuk mendapatkan panjang garis. Itu tidak pernah menghapus file, sehingga akan, pada akhirnya, setelah waktu yang sangat, sangat, sangat, sangat, sangat, sangat mengisi hard drive Anda, beberapa byte pada suatu waktu.
Berikut ini adalah versi yang tidak dipisahkan:
sumber
Python 3, 213 byte
sumber
Bash + coreutils,
12097 byteGaris bash di atas memiliki 95 byte di dalamnya.
Ada file kedua bernama f yang hanya berisi satu karakter:
(Program menulis ke f.)
Jadi saya pikir jumlah total byte harus dinilai sebagai 97 (95 byte untuk isi file bash, 1 byte untuk isi file eksternal, dan 1 byte karena 1 file selain dari program yang digunakan). Ini didasarkan pada Menghitung byte untuk program multi-file .
Catatan: Terima kasih kepada @orlp karena menunjukkan bahwa jawaban yang lebih awal untuk ini yang saya posting adalah omong kosong; Saya salah membaca masalahnya. (Itu diposting sebagai jawaban yang berbeda, yang telah saya hapus.)
sumber
PowerShell , 95 byte
Cobalah online!
Penjelasan
Saya mulai dengan menulis tanggal saat ini (dalam format tanggal pendek) ke file (bernama
z
).>>
bekerja seperti biasa; menambahkan, tetapi membuat jika tidak ada.Selanjutnya, saya membaca isi file baris demi baris dengan
Get-Content
(gc
), pipe throughGet-Unique
(gu
) karena mungkin ada beberapa entri dari tanggal yang sama, lalu pipe throughForEach-Object
(%
).Dalam loop, saya membuat array elemen 2 dengan nilai
0
di elemen pertama, dan nilai saat ini dari$c
(+1
) di elemen kedua. Menggunakan++$c
memungkinkan saya untuk menghindari membungkus sesuatu seperti$c+1
di dalam tanda kurung.Kemudian saya indeks ke dalam array dua elemen dengan perbandingan boolean, yang akan digabung menjadi
0
untuk$false
atau1
untuk$true
. Dalam perbandingan, saya menugaskan ke$d
sebuah[datetime]
objek yang dibuat dari tanggal dibaca dari baris saat ini dalam file. Objek itu dibandingkan dengan$n
, yang pada run pertama belum ditetapkan, jadi itu tidak akan pernah cocok, dan$c
akan diinisialisasi1
, karena nilai pengindeksan ditugaskan$c
.Selanjutnya,
$n
diisi dengan tanggal yang diharapkan berikutnya, dengan menambahkan1
ke objek datetime saat ini. Kuncinya di sini adalah itu1D
artinya[decimal]
literal. Untuk beberapa alasan ketika Anda menambahkan angka integer ke a[datetime]
, itu ditafsirkan sebagai kutu, tetapi ketika Anda menambahkan angka floating point, mereka ditafsirkan sebagai hari. Jadi ini mengisi$n
untuk iterasi berikutnya.Efeknya adalah bahwa penghitung akan disetel ulang setiap kali tanggal saat ini tidak cocok dengan tanggal "berikutnya" (yang merupakan tanggal sebelumnya ditambah 1 hari).
Akhirnya pesan adalah keluaran.
sumber