Làm thế nào tôi có thể rút ngắn:
p=gets.to_i
a=gets
b=gets.to_i
Nếu đầu vào của tôi là một số nguyên, theo sau là một chuỗi, theo sau là một số nguyên?
Làm thế nào tôi có thể rút ngắn:
p=gets.to_i
a=gets
b=gets.to_i
Nếu đầu vào của tôi là một số nguyên, theo sau là một chuỗi, theo sau là một số nguyên?
Câu trả lời:
(từ chối trách nhiệm: Tôi không biết Ruby, nhưng điều này hoạt động trên TIO )
p,a,b=$*
p=p.to_i
b=b.to_i
28 26 byte thay vì 30 (nhờ Snack đã chỉ ra thủ thuật $ *)
Câu trả lời thường được cho phép dưới dạng hàm lambda với đầu vào / đầu ra của bạn là tham số / giá trị trả về của lambda, vì vậy bạn có thể làm điều này:
->p,a,b{...}
Nếu bạn đã gán nó cho một biến f
thì nó sẽ được gọi là
f[p,a,b]
Nói chung cũng tốt khi giả sử các loại đầu vào, nhưng để an toàn, bạn có thể đề cập đến nó trong câu trả lời của mình.
Bài đăng meta có liên quan về các phương thức nhập / xuất được chấp nhận
Nếu bạn cần một chương trình đầy đủ với stdin / stdout io vì một số lý do, ngắn nhất bạn có thể làm là sử dụng -n
cờ để rút ngắn một cuộc gọi gets.to_i
đến eval$_
:
p=eval$_
a=gets
b=gets.to_i
Các -n
cờ bao quanh mã của bạn với while gets ... end
, vì vậy chương trình sẽ loop nếu đầu vào hơn được cung cấp hơn tiêu thụ chương trình của bạn.