Giới thiệu:
Mặc dù ban đầu tôi có một bài hát tiếng Hà Lan trong đầu, trong đó lời bài hát là: " Doe 'n chủ đề naar voren, en' n chủ đề terug " (dịch là " Tiến lên một bước, và lùi lại một chút "), khi Tôi tìm kiếm lời bài hát đầy đủ, tôi nhận ra họ chỉ qua lại và không bao giờ đi ngang.
Vì vậy, thay vào đó bây giờ tôi sử dụng lời bài hát Mr C The Slide Man hay còn gọi là DJ Casper - Cha-Cha Slide cho thử thách này.
Nếu chúng ta bỏ qua mọi thứ khác và chỉ nhìn vào các từ "trái", "phải", "trở lại" và "hop" (tôi đã tính "hop" là chuyển tiếp) bao gồm số tiền được đề cập, toàn bộ bài hát sẽ có danh sách sau ( Tôi đang sử dụng chữ viết tắt LRBH ở đây):
LBHRLLBHRLBHHRRLLLRLBHHHHRRLLLBHHHHHRLRLRLHRLLBHHLRLBHH
Ở đây, lời bài hát đầy đủ trong đoạn mã JavaScript có thể ẩn (để tiết kiệm dung lượng), trong đó các bước di chuyển và số lượng được bao quanh với dấu ngoặc bị chặn:
Thử thách:
Bây giờ vào thử thách chính nó. Chúng tôi có một, hai, hoặc ba đầu vào † . Một trong số đó là danh sách các số nguyên chỉ mục (vì vậy không âm cho chỉ số 0; hoặc dương cho 1 chỉ mục). (Các đầu vào khác là tùy chọn và được giải thích trong các quy tắc thử thách.)
Mỗi trường hợp thử nghiệm sẽ bắt đầu tại một vị trí {x=0, y=0}
.
Bây giờ sử dụng danh sách lời bài hát di chuyển và loại bỏ tất cả các di chuyển tại các chỉ số đã cho của danh sách đầu vào. Sau đó, 'đi bộ' qua các bước di chuyển (lên đến chỉ số lớn nhất của mảng đầu vào) và xuất ra vị trí bạn sẽ kết thúc tại.
Các bước di chuyển sẽ thay đổi tọa độ như sau:
- R
: x+1
- L
: x-1
- H
: y+1
- B
:y-1
Quy tắc thử thách:
- Danh sách di chuyển có thể được truy cập theo bất kỳ cách nào bạn muốn. : Có thể là một đầu vào bổ sung; có thể trong một tệp riêng biệt trên đĩa bạn sẽ đọc từ; có thể trong một biến cấp độ lớp bạn truy cập. Nó sẽ phải theo hình thức
L
,R
,B
vàH
mặc dù (có thể là một chuỗi hoặc nhân vật-list / mảng), vì vậy bạn có thể tiết kiệm không di chuyển danh sách như1
s và-1
s hoặc số nguyên. - Danh sách di chuyển được đưa ra ở trên được mã hóa cứng và sẽ luôn giống nhau. (Đó cũng là lý do tại sao nên đặt nó làm trường cấp độ thay vì lấy nó làm đầu vào nếu điều này giúp đếm byte trong câu trả lời của bạn.)
- Danh sách đầu vào có thể là cả hai chỉ mục 0 hoặc 1 chỉ mục (tùy thuộc vào bạn)
- Chúng tôi chỉ "đi bộ" di chuyển lên và loại trừ chỉ số lớn nhất của danh sách.
- : Bạn cũng được phép lấy mục cuối cùng này làm đầu vào số nguyên riêng biệt, thay vì mục cuối cùng của mảng đầu vào.
- Đầu ra của tọa độ x và y mà chúng ta kết thúc có thể ở bất kỳ định dạng hợp lý nào (mảng số nguyên chứa hai mục, chuỗi phân tách, được in thành STDOUT trên hai dòng riêng biệt, v.v.)
- Bạn có thể giả sử danh sách đầu vào được sắp xếp từ thấp nhất đến cao nhất (hoặc cao nhất đến thấp nhất nếu đó là những gì bạn thích, trong trường hợp đó, mục đầu tiên là kích thước ban đầu của danh sách di chuyển - nếu không được lấy làm đầu vào tách biệt). Và nó cũng sẽ không chứa bất kỳ chỉ số trùng lặp.
- Nếu chỉ mục lớn nhất của danh sách đầu vào lớn hơn danh sách di chuyển ở trên (55 di chuyển nằm trong danh sách di chuyển ở trên), chúng tôi sẽ quay lại đầu danh sách (bao nhiêu lần tùy thuộc vào chỉ mục lớn nhất của đầu vào).
- Bạn được phép xuất ra
y,x
thay vìx,y
, nhưng vui lòng chỉ định điều này trong câu trả lời của bạn nếu bạn làm như vậy.
Thí dụ:
Đầu vào: [0,4,8,10,13,14,27,34,42,43,44,50,53,56,59,60,64]
Ở đây các di chuyển và chỉ số (0-index) trên nhau:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
L, B, H, R, L, L, B, H, R, L, B, H, H, R, R, L, L, L, R, L, B, H, H, H, H, R, R, L, L, L, B, H, H, H, H, H, R, L, R, L, R, L, H, R, L, L, B, H, H, L, R, L, B, H, H, L, B, H, R, L, L, B, H, R, L
Xóa các chỉ mục của danh sách đầu vào, chúng tôi sẽ còn lại các danh sách di chuyển sau:
1, 2, 3, 5, 6, 7, 9,11,12,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,35,36,37,38,39,40,41,45,46,47,48,49,51,52,54,55,57,58,61,62,63
B, H, R, L, B, H, L, H, H, L, L, L, R, L, B, H, H, H, H, R, R, L, L, B, H, H, H, H, R, L, R, L, R, L, L, B, H, H, L, L, B, H, L, H, R, B, H, R
Bây giờ nếu chúng ta đi bộ từ vị trí {0, 0}
trên các di chuyển còn lại, chúng ta sẽ có các tọa độ mới sau đây sau mỗi lần di chuyển:
{0,0};B,{0,-1};H,{0,0};R,{1,0};L,{0,0};B,{0,-1};H,{0,0};L,{-1,0};H,{-1,1};H,{-1,2};L,{-2,2};L,{-3,2};L,{-4,2};R,{-3,2};L,{-4,2};B,{-4,1};H,{-4,2};H,{-4,3};H,{-4,3};H,{-4,5};R,{-3,5};R,{-2,5};L,{-3,5};L,{-4,5};B,{-4,4};H,{-4,5};H,{-4,6};H,{-4,7};H,{-4,8};R,{-3,8};L,{-4,8};R,{-3,8};L,{-4,8};R,{-3,8};L,{-4,8};L,{-5,8};B,{-5,7};H,{-5,8};H,{-5,9};L,{-6,9};L,{-7,9};B,{-7,8};H,{-7,9};L,{-8,9};H,{-8,10};R,{-7,10};B,{-7,9};H,{-7,10};R,{-6,10}
Vì vậy, đầu ra cuối cùng sẽ là: {-6, 10}
Quy tắc chung:
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte thắng.
Đừng để ngôn ngữ mã-golf ngăn cản bạn đăng câu trả lời với các ngôn ngữ không mã hóa. Cố gắng đưa ra một câu trả lời càng ngắn càng tốt cho ngôn ngữ lập trình 'bất kỳ'. - Các quy tắc chuẩn áp dụng cho câu trả lời của bạn, vì vậy bạn được phép sử dụng STDIN / STDOUT, các hàm / phương thức với các tham số thích hợp và kiểu trả về, các chương trình đầy đủ. Cuộc gọi của bạn.
- Lỗ hổng mặc định bị cấm.
- Nếu có thể, vui lòng thêm một liên kết với một bài kiểm tra cho mã của bạn.
- Ngoài ra, thêm một lời giải thích cho câu trả lời của bạn rất được khuyến khích.
Các trường hợp thử nghiệm:
0-indexed input: [0,4,8,10,13,14,27,34,42,43,44,50,53,56,59,60,64]
1-indexed input: [1,5,9,11,14,15,28,35,43,44,45,51,54,57,60,61,65]
Output: {-6, 10}
0-indexed input: [55] (Note: There are 55 moves in the unmodified list)
1-indexed input: [56] (Note: There are 55 moves in the unmodified list)
Output: {-6, 11}
0-indexed input: [0,1,4,5,6,9,10,15,16,17,19,20,27,29,30,37,38,39,41,44,45,46,49,51,52]
1-indexed input: [1,2,5,6,7,10,11,16,17,18,20,21,28,30,31,38,39,40,42,45,46,47,50,52,53]
Output: {10, 16}
0-indexed input: [2,3,7,8,11,12,13,14,18,21,22,23,24,25,26,31,32,33,34,35,36,38,40,42,43,47,48,50,53]
1-indexed input: [3,4,8,9,12,13,14,15,19,22,23,24,25,26,27,32,33,34,35,36,37,39,41,43,44,48,49,51,54]
Output: {-18, -7}
0-indexed input: [0]
1-indexed input: [1]
Output: {0, 0}
0-indexed input: [4,6,7,11,12,13,15,17,20,28,31,36,40,51,59,66,73,74,80,89,92,112,113,114,116,120,122,125,129,134,136,140,145,156,161,162,165,169,171,175,176,178,187,191,200]
1-indexed input: [5,7,8,12,13,14,16,18,21,29,32,37,41,52,60,67,74,75,81,90,93,113,114,115,117,121,123,126,130,135,137,141,146,157,162,163,166,170,172,176,177,179,188,192,201]
Output: {-17, 37}
0-indexed input: [25,50,75,100,125,150,175,200,225,250]
1-indexed input: [26,51,76,101,126,151,176,201,226,251]
Output: {-28, 49}