Chúng tôi đã có một câu hỏi một lần mà chỉ thất bại vào chủ nhật


39

Lấy cảm hứng từ Chúng tôi đã có một bài kiểm tra đơn vị chỉ một lần thất bại vào Chủ nhật , viết một chương trình hoặc chức năng không có gì ngoài lỗi khi là Chủ nhật và thoát ra một cách duyên dáng vào bất kỳ ngày nào khác.

Quy tắc:

  • Không sử dụng đầu vào hoặc hiển thị đầu ra thông qua các phương thức IO thông thường , ngoại trừ in ra STDERR hoặc tương đương với ngôn ngữ của bạn. Bạn được phép in sang STDOUT nếu đó là sản phẩm phụ do lỗi của bạn.
  • Một hàm có thể trả về một giá trị vào các ngày không phải chủ nhật miễn là nó không in bất cứ thứ gì
  • Chương trình của bạn có thể sử dụng Chủ nhật từ bất kỳ múi giờ hoặc múi giờ địa phương, miễn là phù hợp.
  • Lỗi là một cái gì đó làm cho chương trình chấm dứt một cách bất thường , chẳng hạn như chia cho sai số 0 hoặc sử dụng một biến chưa được khởi tạo. Điều này có nghĩa là nếu bất kỳ mã nào được thêm vào sau phần có lỗi, nó sẽ không được thực thi vào Chủ nhật.
    • Bạn cũng có thể sử dụng các câu lệnh tạo lỗi thủ công, tương đương với Python raise.
    • Điều này bao gồm lỗi thời gian chạy, lỗi cú pháp và lỗi trong khi biên dịch (chúc may mắn với điều đó!)
  • Trên một lỗi phải có một số dấu hiệu phân biệt nó không có lỗi
  • Đây là , do đó, số lần rút ngắn nhất trong mỗi ngôn ngữ sẽ thắng!

Tôi sẽ phải đợi đến Chủ nhật để kiểm tra câu trả lời;)


2
Bằng cách "viết một chương trình hoặc chức năng không có gì ngoài lỗi vào Chủ nhật và thoát ra một cách duyên dáng vào bất kỳ ngày nào khác", bạn có nghĩa là bất cứ khi nào nó chạy vào chủ nhật thì nó sẽ thất bại, hoặc bạn có nghĩa là ít nhất nên có một khả năng nó thất bại một ngày chủ nhật. Để làm cho nó rõ ràng hơn, nếu nó chỉ thất bại vào chủ nhật lúc 2 giờ chiều, nhưng không phải vào chủ nhật 3 giờ chiều, nó có ổn không?
Bromind

5
Điều này sẽ còn tốt hơn nếu thứ bảy đã được sử dụng. Bạn có thể đã gọi nó là "Lỗi đêm thứ bảy" và thậm chí đã làm việc trong một số lời bài hát được điều chỉnh cho câu hỏi.
Aaron

3
Chủ nhật? Làm thế nào về thất bại giữa nửa đêm và 1 giờ sáng ?
Draco18

1
Không rõ ràng từ câu hỏi của bạn những gì cấu thành một lỗi. Tôi đang bỏ phiếu để đóng cho đến khi điều này được khắc phục.
Thuật sĩ lúa mì

3
Không thực sự ... Làm thế nào chúng ta có thể phân biệt đầu ra của một lỗi với đầu ra thông thường. Là một cái gì đó giống như print "error"một lỗi? Đoạn văn được thêm vào không thực sự làm rõ bất cứ điều gì.
Thuật sĩ lúa mì

Câu trả lời:



18

PHP 7, 12 byte

1%date("w");

Trên PHP 7, nó ném một loại ngoại lệ DivisionByZerovào Chủ nhật. Điều tương tự cũng xảy ra nếu nó được diễn giải bằng HHVM .

Trên PHP 5, nó hiển thị cảnh báo (bật stderr) vào Chủ nhật:

PHP Warning:  Division by zero in Command line code on line 1

Trên bất kỳ phiên bản PHP nào, nó không hiển thị bất cứ thứ gì vào các ngày khác trong tuần.

Chạy bằng CLI:

php -r '1%date("w");'

hoặc thử trực tuyến!

Hai byte hơn có thể được vắt bằng cách tách các dấu ngoặc kép ( 1%date(w);) nhưng trigger này thông báo (có thể bị ức chế bởi thiết lập đúng error_reporting = E_ALL & ~E_NOTICEtrong php.ini).


Tôi tin rằng bạn phải xác định (trong tiêu đề) rằng câu trả lời này chỉ và duy nhất cho PHP7 + và cho HHVM, vì PHP5.6 và thoát thấp hơn mà không gặp vấn đề gì. Cảnh báo không có lỗi và không dừng việc thực thi mã. Nếu bạn làm như vậy 1%date("w");echo "Alive!", nó sẽ dừng ở PHP7 + và HHVM, nhưng không dừng ở tất cả các phiên bản khác kể từ PHP 4.
Ismael Miguel

@IsmaelMiguel câu hỏi phân loại bất kỳ in ấn nào thành Lỗi tiêu chuẩn là một lỗi, do đó, một cảnh báo là đủ tốt trong trường hợp này.
Làm ơn đừng trở nên xấu xa vào

1
Trích dẫn câu hỏi: "Lỗi là một lỗi khiến chương trình chấm dứt một cách bất thường , chẳng hạn như chia cho sai số 0 hoặc sử dụng biến không được khởi tạo. Điều này có nghĩa là nếu bất kỳ mã nào được thêm vào sau phần bị lỗi thì sẽ không được bị xử tử vào Chủ nhật. ". Điều này không xảy ra với một cảnh báo.
Ismael Miguel

@IsmaelMiguel đoạn bạn đang trích dẫn đã được thêm vào câu hỏi chưa đầy một giờ trước.
axiac

1
Trích dẫn một phiên bản cũ hơn, phiên bản đã có tại thời điểm nhận xét mà tôi đã viết: "[...] viết một chương trình hoặc chức năng không có gì ngoài việc ném lỗi khi đó là Chủ nhật và thoát ra một cách duyên dáng vào bất kỳ ngày nào khác . ". Một cảnh báo chống lại dòng này vì PHP sẽ thoát một cách duyên dáng. Một lỗi sẽ là một lỗi nghiêm trọng hoặc một lỗi cú pháp. Không phải là một cảnh báo để chia cho 0. PHP 5.6 trở lên không hợp lệ cho thử thách này.
Ismael Miguel


8

Java 8, 69 43 34 byte

v->1/new java.util.Date().getDay()

-26 byte nhờ @ OlivierGrégoire .
-9 byte nhờ @Neil .

Giải trình:

Hãy thử nó ở đây.

  • v->{...}( tham số không sử dụngVoid null ) ngắn hơn một byte so với ()->{...}(không có tham số).
  • new java.util.Date().getDay()sẽ trả về 0-6 cho Chủ Nhật-Thứ Bảy, do đó 1/...sẽ java.lang.ArithmeticException: / by zerobáo lỗi nếu giá trị bằng 0, điều này chỉ xảy ra vào Chủ nhật.


@ OlivierGrégoire Ah, java.util.Date()có một phương pháp để có được ngày trong tuần .. Và thậm chí là 0 cho Chủ nhật .. Không chắc là tôi đã bỏ lỡ điều đó như thế nào. : S
Kevin Cruijssen

Yup, thông thường các lớp cũ hơn có tất cả các chức năng trong tên ngắn hơn. ;-)
Olivier Grégoire

1
Điều này có hợp lệ cho 34 byte không? Hãy thử trực tuyến!
Neil

@Neil nó không hợp lệ tại thời điểm bạn đăng nhưng có hiệu lực chưa đầy một giờ sau đó. ;-) Đó là ý tưởng đầu tiên của tôi, mặc dù ...
Olivier Grégoire

7

Python 3 , 33 byte

import time
"Su"in time.ctime()>q

Hãy thử trực tuyến!

Python 3 , 50 byte

from datetime import*
datetime.now().weekday()>5>q

Hãy thử trực tuyến!

Đã lưu ~ 3 byte nhờ Rod .


1
@Rod Tại sao không "Su"in time.ctime()>q(Tôi đã chỉnh sửa với cái này)?
Ông Xcoder

Tôi không thể nắm bắt được nó. Làm thế nào nó hoạt động?
pacholik

@pacholik "Su"in time.ctime()kiểm tra nếu ngày hiện tại là Chủ nhật. Nếu điều này là sai, >qphần này hoàn toàn không được đánh giá và mọi thứ đều diễn ra suôn sẻ. Nhưng nếu đó là sự thật, thì phần thứ hai của bất đẳng thức được đánh giá, và vì qkhông được xác định, điều này sẽ ném a NameError.
Ông Xcoder

1
@pacholik Chỉnh sửa: Tôi không nghĩ mình sai. Vì mục đích hiệu quả, nếu phần đầu tiên bị sai lệch, thì Python thậm chí không bận tâm để đánh giá phần cuối cùng. Tuy nhiên, tôi sẽ phải đợi đến Chủ nhật để kiểm tra điều này. ( Tôi nghĩ ) Trình diễn .
Ông Xcoder

3
@pacholik Lưu ý rằng Python chuỗi các toán tử boolean, do đó tương đương với ("Su" in time.ctime()) and (time.ctime() > q).
dùng202729

6

Bình thường , 8 7 byte

 l-6.d9

Hãy thử trực tuyến!

Giải trình

    .d9 # Get the current day of week (0 = Monday, 6 = Sunday)
  -6    # Subtract 6 from the day
 l      # Try to calculate the log base 2 of the result of the previous operation raising a "ValueError: math domain error" on sundays
        # there is an extra space at the start, to supress the output on the other days

Điều này vẫn không hợp lệ. Đầu ra của bạn ( 1.0không được tạo ra bởi lỗi ). OP nói rõ ràng rằng họ không cho phép điều đó. Tuy nhiên, bạn có thể khắc phục điều đó bằng cách thêm một khoảng trắng vào mã của mình
Ông Xcoder

Nhưng bạn không được phép xuất ra STDOUT trừ khi đó là Chủ nhật và bạn thực hiện đầu ra cho STDOUT.
Ông Xcoder

@ Mr.Xcoder là chính xác. Vào những ngày không phải chủ nhật, không có gì nên được đưa ra
Jo King

@JoKing Tôi hoàn toàn bỏ qua quy tắc này, đã sửa ngay bây giờ
Rod

6

Haskell + Data.Dates , 55 byte

import Data.Dates
succ.dateWeekDay<$>getCurrentDateTime

Hãy thử trực tuyến!

Điều này sử dụng thực tế là Chủ nhật là ngày cuối cùng trong tuần. dateWeekDaytrả về ngày trong tuần dưới dạng một WeekDayloại, được định nghĩa đơn giản là

data WeekDay = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday

WeekDaylà một ví dụ Enum, do đó chúng ta có thể sử dụng succpredđể có được người kế vị hoặc người tiền nhiệm của một ngày trong tuần, ví dụ như succ Mondaysản lượng Tuesday.

Tuy nhiên, Sundaylà mục enum cuối cùng, vì vậy việc gọi succ Sundaykết quả trong lỗi sau:

fail_on_sunday.hs: succ{WeekDay}: tried to take `succ' of last tag in enumeration
CallStack (from HasCallStack):
  error, called at .\Data\Dates.hs:56:34 in dates-0.2.2.1-6YwCvjmBci55IfacFLnAPe:Data.Dates

Chỉnh sửa 1: Cảm ơn nimi cho -3 byte!
Chỉnh sửa 2: -11 byte bây giờ các chức năng được cho phép.


Chương trình đầy đủ: 88 81 74 69 66 byte

import Data.Dates
main=pure$!succ.dateWeekDay<$>getCurrentDateTime

Hãy thử trực tuyến!

purelà cần thiết để nâng kết quả WeekDaytrở lại vào IO Monad. Tuy nhiên, Haskell thấy rằng giá trị không được xuất ra theo bất kỳ cách nào bởi chương trình, vì vậy lười biếng, biểu thức không được đánh giá, vì vậy ngay cả vào Chủ nhật, chương trình sẽ không thất bại. Đây là lý do tại sao $!cần thiết, điều này buộc phải đánh giá ngay cả khi Haskell thường không đánh giá biểu thức.


Cách tiếp cận trước với Data.Time: 127 124 byte

import Data.Time.Clock
import Data.Time.Calendar.WeekDate
c(_,_,d)|d<7=d
main=getCurrentTime>>=(pure$!).c.toWeekDate.utctDay

Hãy thử trực tuyến! Đây là một số nhập khẩu ấn tượng. Thay đổi d<7thành ví dụ d/=5để kiểm tra thất bại vào thứ Sáu. Thất bại với ngoại lệ sau : Non-exhaustive patterns in function c.


1
main=pure$!succ.dateWeekDay<$>getCurrentDateTime. Và, như các chức năng được cho phép, bạn có thể thả main=.
nimi

@nimi Cảm ơn! Tôi không chắc chắn về chức năng mặc dù, bởi vì No using input or showing output through the usual IO methodsquy tắc. Theo như tôi thấy, việc sử dụng một chức năng sẽ dẫn đến một đầu ra cho những ngày không phải Chủ nhật, mặc dù nó được gói trong một hành động IO.
Laikoni

Có thể bạn đúng, nhưng mặt khác, một chương trình đầy đủ có mã thoát, đây cũng là một phương thức chuẩn.
nimi

... các quy tắc thách thức hiện cho phép các hàm trả về giá trị vào các ngày không phải chủ nhật miễn là chúng không in.
nimi

@nimi Cảm ơn đã thông báo.
Laikoni

5

05AB1E , 45 44 byte

Vì 05AB1E không được tích hợp sẵn để lấy ngày trong tuần, tôi đã sử dụng Quy tắc của Zeller để tính toán.

In một dòng mới đến stderr trong trường hợp Chủ nhật (có thể quan sát trong chế độ gỡ lỗi trên TIO)

žežf11+14%Ì13*5÷žgžf3‹-т%D4÷žgт÷©4÷®·(O7%i.ǝ

Hãy thử trực tuyến!

Giải trình

Công thức chung được sử dụng là
DoW = d + [(13*(m+1))/5] + y + [y/4] + [c/4] - 2*c
ở đâu DoW=day of week, d=day, m=month, y=last 2 digits of year, c=centuryvà và biểu hiện trong ngoặc ( []) là tròn xuống.

Mỗi tháng được sử dụng trong công thức tương ứng với một số, trong đó Jan=13,Feb=14,Mar=3,...,Dec=12
Khi chúng tôi có tháng hiện tại ở định dạng phổ biến hơn, Jan=1,...,Dec=12 chúng tôi chuyển đổi tháng bằng công thức
m = (m0 + 11) % 14 + 1

Là một sản phẩm của tháng ba là tháng đầu tiên, tháng mộttháng hai thuộc về năm trước, vì vậy tính toán để xác định ytrở thành
y = (year - (m0 < 3)) % 100

Giá trị cuối cùng cho DoWchúng tôi nhận được là một int trong đó 0=Sat,1=Sun,...,6=Fri.
Bây giờ chúng tôi có thể ném lỗi một cách rõ ràng nếu kết quả là đúng.


11
05AB1E thua Java? Tất cả những gì tôi biết là một lời nói dối
Kamil Drakari

5

JavaScript, 23 byte

Date().slice(1)>'um'&&k

Chương trình đầy đủ.

Biến kkhông được xác định.

JavaScript, 20 byte bởi Rick Hitchcock

/Su/.test(Date())&&k

JavaScript, 19 byte bởi apsillers

Date().match`Su`&&k

1) Bạn quên bao gồm _=>; không có nó thì đây là một đoạn không được phép theo mặc định. 2) Đầu ra này falsevào mỗi ngày khi không nên xuất bất cứ thứ gì.
Xù xì

6
1) Đây là một chương trình đầy đủ, được OP cho phép. 2) Nếu bạn chạy nó dưới dạng chương trình, không có đầu ra
l4m2

3
/Su/.test(Date())&&kcho 20 byte.
Rick Hitchcock

1
new Datephiên bản 25 byte(new Date/864e5%7|0)-3||p
l4m2

3
Giải pháp của @RickHitchcock có thể được rút ngắn lại bằng cách thực hiện thẻ mẫu matchthay vào đó:Date().match`Su`&&k
apsillers

5

VBA / VBScript, 22 20 byte

Lưu được 2 byte nhờ Taylor Scott.

a=1/(Weekday(Now)-1)

Điều này nên được chạy trong Cửa sổ ngay lập tức. Weekday()trả về 1 (Chủ nhật) đến 7 (Thứ bảy) vì vậy điều này tạo ra một số chia cho lỗi không vào Chủ nhật. Nếu không, không có đầu ra.

Thông báo lỗi


Bạn đánh bại tôi để trả lời trong một giờ - 19 Byte:?1/(Weekday(Now)-1)
Taylor Scott

1
@TaylorScott Tôi quên rằng Nownó hợp lệ khi không có ()VBA nhưng tôi không thể sử dụng in vì tôi nghĩ rằng tất cả đầu ra không được phép trừ khi nó bị lỗi. No using input or showing output through the usual IO methods, except to print to STDERR. Tuy nhiên, đã lưu 2 byte.
Kỹ sư Toast

1
Tôi vừa mới viết 20 byte chính xác này dưới dạng một giải pháp VBScript, và sau đó tôi nghĩ tôi muốn xem liệu có một ngôn ngữ kiểu VB hiện có đã được gửi không và đây là ngôn ngữ. Vì vậy, điều này hoạt động cho VBScript và có lẽ các ngôn ngữ kiểu VB khác.

@EngineerToast Tôi nghĩ bạn nên đánh dấu đây là một đa âm với VBScript
Taylor Scott

@TaylorScott Tôi chưa từng làm điều đó trước đây. Tôi đã làm đúng chưa?
Kỹ sư Toast

4

Ruby, 15 byte

1/Time.now.wday

wdaysẽ trả về 0 vào Chủ nhật gây ra lỗi ZeroDivisionError: chia cho 0 lỗi. Ví dụ : 1/Time.new(2018,1,7).wday.


4

Perl 5 , 13 byte

1/(gmtime)[6]

Hãy thử trực tuyến!

Đã trả lời @ biketire's answerj

xóa 3 byte bằng lời nhắc của @ mik


1
gmtimethay vì localtimecũng sẽ đáp ứng các quy tắc và ngắn hơn 3 byte
mik

3

jq, 42 ký tự

(Mã 39 ký tự + tùy chọn dòng lệnh 3 ký tự)

now|strftime("%w")|strptime("%d")|empty

Chỉ cần thử một cách tiếp cận khác ở đây: phân tích số ngày trong tuần (0..6) là số ngày trong tháng (1..31).

Chạy mẫu:

bash-4.4$ TZ=UTC faketime 2018-01-06 jq -n 'now|strftime("%w")|strptime("%d")|empty'

bash-4.4$ TZ=UTC faketime 2018-01-07 jq -n 'now|strftime("%w")|strptime("%d")|empty'
jq: error (at <unknown>): date "0" does not match format "%d"

Lưu ý rằng jq chỉ xử lý ngày UTC.

Hãy thử trực tuyến!



3

VBA 18 byte

Điều này phụ thuộc vào chức năng sẵn có date()trả về số ngày còn lại 1 nếu chia cho 7, do đó có thể là hệ điều hành và / hoặc CPU cụ thể.

a=1/(date mod 7-1)

Nó chạy trong cửa sổ VBA ngay lập tức.


2
Chào mừng đến với PPCG! Nói chung, một lời giải thích và một liên kết đến một trình biên dịch / phiên dịch trực tuyến được đánh giá cao.
FantaC

@tfbninja - cập nhật ok
JohnRC

và, nếu cần, hướng dẫn cách sử dụng, ví dụ như gọi hàm hoặc biến
FantaC

Chơi golf đẹp, chỉ là để đăng bài này sau khi nhìn thấy câu trả lời khác!
Greedo

3

R , 31 byte 30 byte

if(format(Sys.Date(),'%u')>6)a

Hãy thử trực tuyến!

Không có đầu ra vào các ngày không chủ nhật, Error: object 'a' not foundchủ nhật.

format(Sys.Date(),'%u')là cách ngắn nhất tôi có thể tìm thấy để có được ngày trong tuần, nó xuất ra số lớp nhân vật cho ngày trong tuần, với 7 cho Chủ nhật. Chúng ta có thể so sánh với một số 7 và nếu thực sự cố gắng sử dụng một đối tượng không xác định.

Đã lưu một byte nhờ Giuseppe!


>6là một byte ngắn hơn.
Giuseppe

2

Ocaml, 46 byte

open Unix
let()=1/(gmtime(time())).tm_wday;()

và trong REPL ocaml, chúng ta có thể đạt được tốt hơn bằng cách loại bỏ letvà cuối cùng :():

$ open Unix;;1/(gmtime(time())).tm_wday;;<CR>

đó là 41 byte (bao gồm 1 byte cho lợi nhuận vận chuyển).


1
Chào mừng đến với PPCG!
Laikoni

1
Có thể làm cho mã này hoạt động trên Dùng thử trực tuyến ?
Laikoni

Mmh ... lệnh biên dịch là ocamlopt unix.cmxa <file>, tôi không biết cách cung cấp tùy chọn biên dịch trên tio. Tôi sẽ điều tra vào tối nay
Bromind

Bộ ba sử dụng trình thông dịch REPL (simili), vì vậy bạn nên sử dụng khả năng thứ 2. Tuy nhiên, dường như không có thư viện Unix (hoặc không cho phép truy cập vào nó, vì bất kỳ lý do gì)
Bromind


2

TI-Basic 84+, 23 byte

getDate
0/(1-dayOfWk(Ans(1),Ans(2),Ans(3

Cần các lệnh ngày & thời gian, chỉ từ 84 trở lên.


2

MATL , 12 byte

vZ'8XOs309>)

Lỗi được tạo ra vào Chủ nhật là:

  • Chạy trên Octave:

    MATL run-time error: The following Octave error refers to statement number 9:  )
    ---
    array(1): out of bound 0
    
  • Chạy trên Matlab:

    MATL run-time error: The following MATLAB error refers to statement number 9:  )
    ---
    Index exceeds matrix dimensions
    

Để đảo ngược hành vi (lỗi vào bất kỳ ngày nào trừ Chủ nhật), hãy thêm ~sau >.

Hãy thử trực tuyến!

Giải trình

Điều này khai thác thực tế rằng

  • lập chỉ mục vào một mảng trống với chỉ số logic falselà hợp lệ (và kết quả là một mảng trống, không tạo ra đầu ra); trong khi

  • lập chỉ mục với truegây ra lỗi vì mảng thiếu mục nhập đầu tiên.

Mã nhận xét:

v       % Concatenate stack. Gives empty array
Z'      % Push current date and time as a number
8XO     % Convert to date string with format 8: gives 'Mon', 'Tue' etc
s       % Sum of ASCII codes. Gives 310 for 'Sun', and less for others
309>    % Greater than 309? Gives true for 'Sun', false for others
)       % Index into the empty array
        % Implicit display. Empty arrays are not displayed (not even newline)

2

Q, 20 byte

if[1=.z.d mod 7;'e]

.zd trả về ngày hiện tại. mod thực hiện modulo của ngày hiện tại, trả về một int. Nếu ngày là chủ nhật, .zd mod 7 trả về 1. Nếu 1 = 1, (vào chủ nhật) và lỗi được đưa ra bằng cách sử dụng toán tử 'Để đơn giản, lỗi chỉ là ký tự e.


3
Chào mừng đến với PPCG!
Martin Ender

2

C # (.NET Core) , 55 54 48 byte

Hãy thử trực tuyến!

Đã lưu 1 byte nhờ Shaggy

Đã lưu 5 byte nhờ Emigna

Đã lưu 1 byte nhờ Kevin Cruijssen

_=>{var k=1/(int)System.DateTime.Now.DayOfWeek;}

May mắn là Chủ nhật được lập chỉ mục 0 trong enum nếu không nó sẽ cần phải là (System.DayOfWeek)7



3
Bạn có nhận được using Systemmiễn phí trong C #? Nếu vậy tôi nghĩ bạn có thể làm ()=>{var k=1/(int)DateTime.Now.DayOfWeek;}cho 42 . System.
Mặt

3
@Emigna đánh tôi với nó; ()=>{var k=1/(int)System.DateTime.Now.DayOfWeek;}ngắn hơn Và bạn có thể lưu thêm một byte bằng cách sử dụng tham số không sử dụng trống thay vì không có tham số (nghĩa là v->{...}thay vì ()->{...})
Kevin Cruijssen

1
40 byte : ()=>1/(int)System.DateTime.Now.DayOfWeek. Hãy thử nó ở đây .
Ayb4btu


2

C,  68  55 byte

Cảm ơn @Ken YN vì đã lưu 13 byte!

#import<time.h>
f(n){time(&n);n/=gmtime(&n)->tm_wday;;}

Hãy thử trực tuyến!


Bỏ trung gian dđể lấy n/=gmtime(&n)->tm_wday;54 byte (nhưng tôi không chắc là tôi thích tất cả các cảnh báo của trình biên dịch này ...)
Ken YN

@ KenY-N Cảm ơn!
Steadybox

1

R , 40 byte

stopifnot(weekdays(Sys.Date(),T)!="Sun")

Hãy thử trực tuyến!

weekdaystrả về ngày trong tuần của ngày, với một đối số tùy chọn abbreviate, rút ​​ngắn Sundaylại Sun, lưu một byte đơn.

stopifnotném một lỗi nếu, đối với mỗi đối số, không phải allTRUEvà ném lỗi với một thông báo chỉ ra phần tử đầu tiên không có TRUE, vì vậy lỗi làError: "Sun" is not TRUE




1

Gema , 40 ký tự

\A=@subst{Su=\@err\{S\}\;*=;@datime}@end

Phải chỉ định một thông báo lỗi, vì vậy hãy chọn một thông báo ngắn: Triệu S phạm.

Chạy mẫu:

bash-4.4$ faketime 2018-01-06 gema '\A=@subst{Su=\@err\{S\}\;*=;@datime}@end'

bash-4.4$ faketime 2018-01-07 gema '\A=@subst{Su=\@err\{S\}\;*=;@datime}@end'
S

1

Funky , 21 byte

if!os.date"%w"error()

os.date"%w"trả về ngày hiện tại trong tuần ở định dạng 0-6, trong đó 0 là chủ nhật. Nhận được logic không phải của điều đó chỉ đúng khi ngày trong tuần là 0, vì vậy Chủ nhật. Sau đó, chỉ cần một cơ bản if(a){error()}sẽ đảm bảo rằng chương trình này chỉ có lỗi vào chủ nhật

Hãy thử trực tuyến!



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.