Nó là gì?


15

Mục tiêu

Trong bối cảnh World Series đang ở gần, tôi cần một chương trình có thể đọc điểm số của hộp và cho tôi biết nó là gì. Điều này hơi phức tạp vì bóng chày sử dụng một phương pháp kỳ lạ để ghi lại điểm số. Họ không ghi điểm của đội at-bat cho hiệp đấu cho đến khi họ ghi được một bước chạy (và vẫn đang tiếp tục) hoặc đã hoàn thành cú dơi của họ. Do đó, số 0 trên bảng điểm luôn có nghĩa là số dơi đã hoàn thành. Ví dụ:

Example A:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
  Them| 0| 0| 0| 0| 0| 2|  |  |  |
    Us| 0| 0| 2| 0| 0| 0|  |  |  |

Example B:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
  Them| 0| 0| 0| 0| 0| 2|  |  |  |
    Us| 0| 0| 2| 0| 0| 1|  |  |  |

Example C:
Inning| 1| 2| 3| 4| 5| 6| 7| 8| 9|
  Them| 0| 0| 0| 0| 0| 2|  |  |  |
    Us| 0| 0| 2| 0| 0|  |  |  |  |

#Them is the Away Team, Us is the Home Team (who are the guys you root for)
  • Ví dụ A: Chúng tôi biết rằng chúng tôi đứng đầu số 7 vì Chúng tôi có số 0 được ghi ở dưới cùng của số 6 và Đầu số 7 là trống.
  • Ví dụ B: Nó có thể là đáy của thứ 6 hoặc đầu của thứ 7.
  • Ví dụ C: Nó có thể là đỉnh hoặc đáy của thứ 6.

Nhiệm vụ của bạn là trả lại (các) lượt chơi có thể.

Đầu vào

Hai danh sách các số nguyên không âm. Danh sách sẽ được giả định là lởm chởm với danh sách của Đội khách có cùng kích thước hoặc lớn hơn một yếu tố so với Đội chủ nhà. Bạn có thể lấy điểm theo thứ tự nhưng nêu trong câu trả lời của bạn nếu bạn không sử dụng mặc định. Tức là, Đội khách sau đó là Đội chủ nhà (mặc định) hoặc Đội chủ nhà sau đó là Đội khách (đảo ngược). Họ cũng có thể được đệm bằng dữ liệu giả nếu bạn muốn, nêu trong câu trả lời của bạn nếu bạn làm như vậy.

Đầu ra

Một chuỗi hoặc một cái gì đó tương đương xác định số đầu vào và cho dù đó là đầu hay cuối. Ví dụ 7B 8T, B7 T8, ['7B','8T']tất cả đều tốt. Nếu có hai câu trả lời, bạn phải xuất cả hai. Các định dạng là khá linh hoạt mặc dù.

Quy tắc

  • Đầu vào sẽ luôn hợp lệ
  • Trò chơi có thể đi vào hiệp phụ vô thời hạn. Chương trình của bạn sẽ có thể hỗ trợ tối đa 255 hiệp.
  • Lỗ hổng tiêu chuẩn bị cấm
  • Đây là nên mã ngắn nhất sẽ thắng

Các trường hợp thử nghiệm

#Input:
[[], 
 []] 
#Output: 1T

#Input:
[[0], 
 []] 
#Output: 1B

#Input:
[[0,0,0,1], 
 [0,0,0,0]] 
#Output: 5T

#Input:
[[0,0,0,1], 
 [0,0,0,1]] 
#Output: 4B, 5T

#Input:
[[0,0,0,1,0,0,1,0,0,1],
 [0,0,0,0,1,0,0,1,0,1]] 
#Output: 10B, 11T

#Input:
[[0,0,0,1], 
 [0,0,0]] 
#Output: 4T, 4B

#Input:
[[0,0,0,0], 
 [0,0,0]] 
#Output: 4B

Chúng ta có thể lấy hai danh sách theo thứ tự ngược lại không? tức là đáy rồi lên đỉnh?
Jo King

@JoKing Chắc chắn, miễn là nó được ghi chú và câu trả lời vẫn khớp chính xác.
Veskah

Là giá trị trả về số nguyên dương / âm có được chấp nhận đầu ra không?

@Rogem Điều đó thúc đẩy nó một chút nhưng đọc bài viết của bạn, điều đó tốt. Tôi đã nói đầu ra là khá linh hoạt.
Veskah

Câu trả lời:


4

C (gcc) , 50 byte

Đưa đầu vào dưới dạng con trỏ vào danh sách xen kẽ (nghĩa là {them#1, us#1, them#2,...}).

Trả về một tùy chọn thông qua sửa đổi, và tùy chọn khác thông qua giá trị trả về.

Các giá trị âm cho thấy đáy của hiệp, giá trị dương cho thấy đỉnh của hiệp. Số không "trống". Giá trị tuyệt đối của đầu ra là số lượng hiệp. Vì vậy, -4,5chỉ ra các khả năng là đỉnh của thứ năm và dưới cùng của thứ tư, và 1,0chỉ ra khả năng duy nhất là hàng đầu của thứ nhất.

Giá trị trả về của macro có thể được sử dụng để xác định xem có một hoặc hai hiệp có thể không; giá trị trả về là 0nếu không có hiệp khác. Mặt khác, nó là số lượng của hiệp.

Không có byte mã nguồn. Sử dụng như sau là cờ tiền xử lý:

-Df(o,n,l)=({o=n%2?~n/2:n/2+1;l[n-1]?-o-~n%2:0;})

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

Thuốc khử trùng

-Df(o,n,l)=({
// Define a function-like macro f(o,n,l)
// o is the output variable, n is the size of the list, 
// l is a pointer to the first element of the list.
o=n%2?~n/2:n/2+1;
// If there's an odd number of elements, first possible inning is -(n+1)/2. 
// Else, it is (n/2)+1.
l[n-1]?-o-~n%2:0})
// If the score from the last inning is non-zero, the other possible inning
// needs to be determined; flip the sign of first output value then deduct 
// 1 from it if the number of elements is even.

Ngoài ra, điều này có thể được đánh dấu thêm 4 byte nếu tôi có thể giả sử danh sách theo thứ tự ngược lại (cuối cùng trước tiên) hoặc con trỏ trỏ đến phần tử cuối cùng trong mảng. Không đi vì điều đó, vì nó cảm thấy như là quá nhiều gian lận.

Tôi rất muốn nghe từ @veskah nếu lấy đầu vào như bạn đã làm, vì nó có vẻ khá khác biệt (và hữu ích) so với thông số ban đầu.
BLT

2
@BLT Theo quy ước, xen kẽ là cách danh sách các danh sách được thực hiện trong C; nhiều hội nghị truyền hình rất đánh thuế vào tài nguyên. Tùy chọn khác sẽ có một danh sách khác, nhưng sau đó sẽ rất không thực tế để nối các yếu tố mới vào.

3

Perl 6 , 52 48 45 byte

-3 byte nhờ một số cấu trúc lại từ nwellnhof!

->\a,\b{(+a,a==b if (b,a)[a>b].tail;b+1,a>b)}

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

Khối mã ẩn danh nhận đầu vào là hai danh sách, trên cùng, dưới cùng. Đầu ra là một danh sách các bộ dữ liệu, trong đó phần tử đầu tiên là số nhập và phần tử thứ hai là Đúng hoặc Sai, tương ứng với Dưới cùng hoặc Trên cùng.

Giải trình:

       {                                    }  # Anonymous code block
->\a,\b   # That takes input lists a and b
        (                                  )   # Return a list of
                                    b+1,a>b    # A list of 
                                               #  The length of the second list plus 1
                                               #  And top/bottom
         +a,a==b     # And the length of the first list
                     # And the other of top/bottom
                 if  # Only if:
                    (b,a)[a>b]      # The current of top/bottom's
                              .tail # Last element exists and is not 0

3

R , 103 96 byte

function(a,b,l=sum(a|1),k=sum(b|1))I(l,I(l-k,I(a[l],c(l,-l),-l),I(b[l],c(-l,l+1),l+1)),1)
I=`if`

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

@digEmAll lưu 7 byte!

Lấy hai danh sách các vectơ làm đầu vào và xuất ra một hoặc hai số nguyên biểu thị các hiệp có thể. Số nguyên dương là đỉnh của hiệp và số nguyên âm là đáy của hiệp.

Trong R, số nguyên dương là trung thực, vì vậy tôi có thể sử dụng sự khác biệt về độ dài làm đối số đầu tiên if().


Bạn có thể gặp may mắn hơn [[khi ifthay thế kể từ khi bạn sử dụng [mã của mình.
Giuseppe

@Giuseppe Tôi đã thử nó với <^. Tôi nghĩ [là một trong những ví dụ tôi nhớ.
BLT

Bạn cũng có thể đặt tên khác cho 'if'(và xóa {}và di chuyển ra f=ngoài): 96 byte
digEmAll


2

Thạch , 11 byte

ZẎṖṠṪ$СẈd2

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

Phần tử đầu tiên: chỉ số dựa trên 0 của cột.
Yếu tố thứ hai: 0cho đầu,1 cho dưới.

Đầu ra là một danh sách của một hoặc hai cặp như được chỉ định ở trên (được sắp xếp để hiển thị nó tốt hơn). Các hiệp đầu ra theo thứ tự ngược lại.


2

Python 2 , 135 129 126 125 123 119 byte

a,b=input()
c=len(a)
e,f=`c+1`+"T",`c`+"B"
print((f+e,e)[b[-1]<1],(`c`+"T"+f,f)[a[-1]<1])[len(b)<c]if b else"1"+"TB"[c]

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

-1 cảm ơn @ovs

-4 một lần nữa xin cảm ơn @ovs


if d else"11BT"[c<1::2]cho -3
OVS

if dTôi có thể thấy (không nên bỏ qua điều đó!) Nhưng else"11BT"[c<1::2]không xuất hiện bất kỳ thời gian ngắn nào cho tôi trừ khi tôi thiếu thứ gì đó.
ElPedro

Đừng lo lắng @ovs khi tôi tìm thấy một cách khác lấy cảm hứng từ if ddù sao của bạn .
ElPedro

Thay vì if dbạn có thể làmif b , sau đó bạn không cần phải lưu trữ len(b)trong biến.
trứng

@ovs Tôi nhìn đó nhưng cũng cần dcho [d<c]. Không thể nhìn thấy một cách vòng đó. Có ý kiến ​​gì không?
ElPedro

1

Python 2 , 65 byte

a,b=input()
exec"a,b=[0]+b,a;print[len(b)][a[-1]<len(a+b)%2:];"*2

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

In hai dòng, đầu tiên là khả năng nhập liệu dưới cùng sau đó là dòng trên cùng, dưới dạng danh sách đơn. Nếu một trong hai là không thể, danh sách đó là trống rỗng.


1

Dọn dẹp , 84 75 byte

import StdEnv
$ =length
?v|last[0:v]>0= $v=0
@a b| $b< $a=(?a,$a)=($a+1,?b)

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

Xác định chức năng @ :: [Int] [Int] -> (Int, Int)và một số trợ giúp.
Cung cấp đầu ra dưới dạng(Top, Bottom) số 0 biểu thị khả năng null.

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.