Tidak terbatas pada satu bahasa pemrograman saja.
Apa yang saya katakan adalah Anda menyetujui 1 dan mengembalikannya pada hari Senin, 7 sesuai dengan minggu dan seterusnya.
Saya sudah mengelola pernyataan 146 byte di Jawa untuk melakukan hal yang sama.
return (n<1?"invalid":(n<2?"monday":(n<3?"tuesday":(n<4?"wednesday":(n<5?"thursday":(n<6?"friday":(n<7?"saturday":(n<8?"sunday":"invalid"))))))));
Program Anda harus:
- tampilkan kata-kata lengkap (STDOUT)
- tidak macet jika inputnya kurang dari 1 atau lebih besar dari 7
invalid
jika input tidak valid? Pertanyaannya tidak menyatakan itu tetapi contohnya menyarankan.Jawaban:
Ruby, 69 atau 38 byte
Berikut adalah cara sederhana untuk meningkatkan kode Anda (ditulis dalam Ruby tetapi berfungsi serupa di Jawa):
n
sebagai indeks.day
.Anda dapat membuatnya lebih pendek jika Anda mengimpor nama-nama hari dalam seminggu dari perpustakaan, seperti Ruby:
Perhatikan bahwa sekarang saya tidak pengurangan
n
melainkan mengambil modulo 7 untuk memetakan7
ke0
. Ini karenaDAYNAMES
dimulai dengan hari Minggu.sumber
Bash: 47 byte
Masih tidak ada entri bash? Saya kecewa ...
Ia menggunakan hari-hari dalam minggu ini dan hanya mengganti digit terakhir (11-17 Agustus 2014 - 11 adalah hari Senin, 12 adalah hari Selasa, dll.).
sumber
date -d $1sept +%A
berfungsi juga (meskipun hanya tahun ini; mengurangi byte menjadi 6 * 9). GNUdate
sangat fleksibel dalam hal ini sehingga harus ada kemungkinan tambahan.date
daripada Bash, itu akan menjadi hanya14-08-1$1
- 9 byte!Marbelous
192191185181Kode keluar bukan nol jika input tidak valid
Pemakaian:
sumber
Javascript,
9588 byte7 dalam biner adalah 0111, artinya Anda dapat mengurangi beberapa karakter dengan operasi bitwise
x>0&&x<8
.Sunting: Menghapus
s
array dengan bantuan edc65 .sumber
x=prompt();alert("Invalid 0Mon0Tue0Wednes0Thurs0Fri0Satur0Sun".split(0)[x&~7?0:x]+"day")
C # - 26 Bytes
Berharap hari itu disimpan di dalam
n
.Tidak crash, seperti yang diharapkan.
Didukung oleh LINQPad ™
Terima kasih khusus kepada bmarks dan Stephan Schinkel untuk masing-masing penghematan byte dan pembengkokan aturan
sumber
C #, 95 byte
Di C # Anda dapat melakukan sesuatu seperti ini:
sumber
i<1
, dan Anda dapat menyimpan 2 byte dengan menggunakan|
daripada||
(bukan hubungan arus pendek) dan menghapus tanda kurung di sekitar kondisi. Ini juga lebih pendek untuk membuat dan memisahkan string" mon tues wednes thurs fri satur sun".Split()[i]
daripada membuat array string dengan ukuran ini (perhatikan ruang di awal string, yang menghemat mengurangi 1 dari i)Extended BrainFuck : 104
Tidak Disatukan (Idiomatik)
sumber
T-SQL 36
Asumsikan variabel disimpan dalam @. Jika itu adalah input yang tidak valid (@> 7 atau @ <1), maka itu tidak memilih apa pun.
Sunting: Rupanya kencan bisa berupa angka. Dihapus 5 karakter dengan itu.
Sunting 2: Berdasarkan sunting pertama. Karena ini int, saya tidak harus menggunakan DATEADD (); Saya bisa menggunakan tambahan normal sebagai gantinya.
sumber
Javascript 93 :(
sumber
q
itu-5
?Lua - 57 byte
Lua memiliki os.date () di perpustakaan standarnya, dan ia memformat. Jadi Anda dapat menghabiskan waktu (dalam hal ini "9e4 * (n + 3)") dan meminta untuk mengembalikan format "% A", yang merupakan nama-nama hari dalam seminggu. Juga, sangat berguna dalam Lua adalah "a dan b atau c". Jika a benar (dalam kode a adalah "n> 0 dan n <8") ia mengembalikan b, jika a salah (atau nil) ia mengembalikan c.
sumber
%A
diperlukanMathematica
1916 byteSeperti dicatat Dr. Rebmu, 1 Januari 1 AD adalah tempat yang baik untuk memulai. Itu (mungkin) jatuh pada hari Senin.
sumber
Bash -
2119Asumsikan input dalam variabel
D
:HTML + PHP - 26
Biarkan
$d
menjadi teks inputTimestamp 86400 * 3 adalah hari Minggu pertama dari awal dunia UNIX.
Anda dapat mengujinya dengan menjalankan:
sumber
Perl, 60 byte
Sesuatu seperti ini:
Jika ingin mengembalikan pesan dan Anda khawatir tentang indeks negatif, Anda dapat menggunakan yang ini sebagai gantinya (8 karakter lagi):
sumber
Lua
134119115100100Pada dasarnya pemikiran yang sama dimiliki MartinButtner , kecuali sekitar
4,54,11,71,4 kali lebih lama. Apakah menganggapn
disimpan sebagai variabel di tempat lain.sumber
n
untuk disimpan dalam variabel, seperti dalam cuplikan OP.Python (84)
Saya kira ini adalah solusi yang menarik. Dibutuhkan ide dari jawaban lain yang saya baca di suatu tempat (tidak dapat menemukannya, saya tahu itu ada di situs ini, jadi jika ada yang tahu, jangan ragu untuk memberi tahu saya.) String dihasilkan dengan program J berikut:
Mengambil beberapa petunjuk halus dari jawaban ini :
sumber
Bash
7448+ pesan kesalahanPendekatan yang berbeda karena semua jawaban lain fokus pada penyimpanan string dalam beberapa bentuk.
sumber
sh
jawaban POSIX . Di dalambash
Anda dapat menggunakan evaluasi aritmatika.read x;((0<x&&x<8))&&date -d2007010$x +%A||echo out of range
lebih pendek.||echo out of range
. Menimbang bahwa solusi yang diterima tidak mengikuti aturan (print to stdout) ... Tetapi jika Anda ingin mengikuti contoh OP, Anda dapat menggunakannyainvalid
sebagai gantiout of range
.Perl, 54
Dari STDIN ke STDOUT, tidak ada fungsi tanggal, tidak ada crash.
sumber
PHP (56 byte)
sumber
Clojure - 99 karakter
Polos dan sederhana, meskipun upaya (pemula) terbaik saya:
sumber
JS: 58
Dengan asumsi n sudah disimpan sebagai variabel.
Sebagai fungsi ES6 (asumsi yang sama): 67
Ini hanya akan mencetak "hari" untuk 0 dan loop sekitar untuk n> 7
sumber
day
untuk8
dan mulai lagi dariMonday
pada9
.Rebmu : 21 karakter
Untuk berlari:
Angka yang tidak valid akan mengembalikan "tidak ada".
Bagi mereka yang tidak terbiasa dengan Rebmu, ia menggunakan transisi kasus untuk menghilangkan kebutuhan spasi - dalam batas-batas apa yang secara hukum dapat diuraikan. Alih-alih menggunakan InitialCapsToBreak, ia menggunakan CASEtransitionsTObreak, karena itu memungkinkan makna yang berbeda untuk dianggap berasal dari modal awal yang dijalankan jika awal awal adalah huruf kecil.
Jadi itu setara dengan program Rebol
pick system/locale/days a
. (Rebmu dengan konvensi menamai parameter skripnya sebagai "a").Menghemat satu karakter lebih dari
system/locale/days/(a)
:-)sumber
Haskell - 62
Membungkus;
0
adalah hari Minggu,8
hari Senin, dan seterusnya.Jika mencetak ke stdout diperlukan ( 68 byte , output dalam tanda kutip ganda):
sumber
LiveScript - 49
Kembali
undefinedday
jika input tidak valid. ;)Jika mencetak ke stdout diperlukan ( 60 byte ):
sumber
Befunge-93 (206
208)Yang ini menyenangkan untuk ditulis. Saya yakin itu bisa dilakukan dengan cara yang lebih baik, tapi ... itu berhasil! =) Dapat dicoba di sini .
Akan lebih pendek jika
#
akan melompati seluruh string daripada hanya sel individu.Ide dasar di baliknya: Dapatkan nomor dan terus mengurangi itu. Setiap kali kita mengurangi itu, kursor bergerak ke kanan, membungkus dan dikirim satu tingkat lebih rendah. Setelah kami mencapai nol, alih-alih pindah ke kiri dan tekan nama hari (bagian pertama). Sejak saat itu, kursor akan bergerak langsung ke bagian bawah di mana string dicetak dan "hari" ditambahkan.
Anda dapat melihat cara kerjanya dengan menggunakan fitur "Langkah" di tautan ke penerjemah online.
Sunting: Saya berhasil mencukur dua byte dengan melakukan
>:#,_
alih - alih>,,,,,,
, yang merupakan pretter juga.sumber
MATLAB: 33
MATLAB: 71
Haskell: 75
Haskell: 97
Python 3.4.1: 81
sumber
(0<n<8)
lebih pendek dari itu(n in range(8))
.split()
juga membagi stringJava 8 -
6964 karakterBerikut ini ekspresi di Java 8, termasuk impor. Sekarang ditingkatkan (terima kasih kepada Tomáš Dvořák ):
Cukup cetak
MONDAY
untuk nilai palsu darii
sumber
Python - 87
Saya tidak melihat cukup cinta untuk dict's. Get () Yang ini mengharapkan
a
menjadi nomorsumber
day
dalam daftar Anda dan menambahkan+"day"
di akhir kode Anda."mon,tues,...".split(",")
Python, 95 byte
sumber
%
memformat, membuat daftar dari string menggunakansplit()
dan menghapus spasi yang tidak perlu."mon tues wednes thurs fri satur sun".split()[n-1]+"day"if 0<n<8else"invalid"
Python 2,
848364Dengan asumsi n sudah disimpan sebagai variabel.
sumber
Cobra - 43
sumber