Tôi yêu cá mòi


33

Tôi yêu cá mòi, tôi không thể có đủ chúng, và máy tính của tôi, Omnilang 5000, đó là ngôn ngữ bất khả tri.

Để mang lại cho máy tính của tôi niềm vui khi trải nghiệm cá mòi, tôi đã quyết định cho nó ăn một số chương trình có khả năng hiển thị trên màn hình hộp cá mòi theo nhiều hướng khác nhau và hiển thị tới mười con cá mòi.

Trong thử thách này, bạn sẽ chịu trách nhiệm tạo các chương trình dựa trên các tham số sau:

Đầu vào

Một số (trong khoảng từ 0 đến 10) và một chữ cái từ một trong những "LR" sau (tương ứng với Trái hoặc Phải) Ví dụ: 3Lhoặc 5R; Làm thế nào điều này là đầu vào vào chương trình là tùy thuộc vào bạn.

Đầu ra

Một hộp cá mòi mở với cá mòi hướng về phía được chỉ định, với phím (được biểu thị bằng %ký tự "") và nắp được bóc (cuộn thiếc ở cuối được biểu thị bằng @ký tự "") nằm ở đầu hộp thiếc.

  • Tất cả cá mòi phải đối mặt với hướng được chỉ định bởi đầu vào.
  • Tất cả cá mòi sẽ có cơ thể dài năm ký tự giữa mang (hoặc " )" hoặc " (") và đuôi " ><"
  • Chìa khóa và nắp cuộn được bóc vỏ sẽ luôn hướng về phía ngược lại với cá mòi.
  • Hộp thiếc phải có hình 3 chiều giống như hình dưới đây trong các ví dụ.
  • Chiều cao tối thiểu của thiếc là 3 cá mòi về chiều cao. Vì vậy, nếu một số nhỏ hơn 3, một hộp 3 cá mòi có chiều cao phải được hiển thị, với số lượng cá mòi được nhập vào trong đó. Mặt khác, thiếc phải là số lượng cá mòi cao được chỉ định trong đầu vào. Vì vậy, đầu vào của 0Rhoặc 0Lsẽ hiển thị một tin cá mòi trống.
  • Bất kỳ đầu vào nào khác không thể xác nhận sẽ không hiển thị bất cứ điều gì.

Ví dụ: cho " 3L"

 __________
(__________@%
|<*)_____><||
|<*)_____><||
|<*)_____><||
'==========''

Cho " 7R"

   __________
 %@__________)
 ||><_____(*>|
 ||><_____(*>|
 ||><_____(*>|
 ||><_____(*>|
 ||><_____(*>|
 ||><_____(*>|
 ||><_____(*>|
 ''=========='  

Cho " 2L"

 __________
(__________@%
|<*)_____><||
|<*)_____><||
|          ||
'==========''

Cho " 0R"

   __________
 %@__________)
 ||          |
 ||          |
 ||          |
 ''=========='

" 0L"

 __________
(__________@%
|          ||
|          ||
|          ||
'==========''

Đầu vào không hợp lệ sẽ không trả lại bất cứ điều gì ...

  • Đây là mã golf, vì vậy số lượng nhân vật nhỏ nhất sẽ chiến thắng thử thách này.
  • Không có sơ hở như bình thường.

Câu trả lời:


39

> <> , 250 235 + 3 = 238 byte

</~?{"  __________"a:="L"i&
o/?=1l
:/}rv?{~$?{"()__________@%":
l< o/?=1
:&oa/&~$?(3$@0-3:
/!?:</"||><_____(*>|"av?@:$-1
 /=?/v"|<*)_____><||"a/
 \2lo/
\~&
\>:?!\1+$::{a"|"{?:"          ||"{?~
<\?=2 lo
"'":~/~?{"''==========":?{
;!?lo<

Hãy thử trực tuyến , hoặc xem nó tại sân chơi cá ! Đọc "L" hoặc "R" từ STDIN và giả sử số lượng cá mòi đã có trên ngăn xếp (cần một -vcờ cho +3 byte).

Vì dĩ nhiên tôi phải viết cái này trong> <>.


3
Viết giải pháp này trong Cá được truyền cảm hứng ...
WallyWest

Sân chơi cá hoạt động như thế nào? Tôi không thể chạy nó. Tôi đặt đầu vào ở đâu?
JAD

@JarkoDubbeldam, sau khi sao chép mã vào cửa sổ và gửi nó, bạn cần đặt số lượng cá mòi trong đó ghi "ngăn xếp ban đầu" (mô phỏng -vcờ) và hướng ("L" hoặc "R") trong "đưa ra nhập vào chương trình "sau đó bấm" cho ". (Tôi đã chỉnh sửa câu trả lời để hy vọng làm cho nó rõ ràng hơn.)
Không phải là một cây vào

1
Tuyệt vời: D Cũng phải đẹp trong quá trình gỡ lỗi
JAD

15

Biểu tượng cảm xúc , 456 448 byte

🐋🚂🍇🐖🐟d🚂🍇🍦a😛0d🍊a🍇😀🔤 __________❌n(__________@%🔤🍉🍓🍇😀🔤  __________❌n%@__________)🔤🍉🔂i⏩0🐕🍇🍊a🍇😀🔤|<*)_____><||🔤🍉🍓🍇😀🔤||><_____(*>|🔤🍉🍉🍊▶️4🐕🍇🔂i⏩0➖3🐕🍇🍊a🍇😀🔤|          ||🔤🍉🍓🍇😀🔤||          |🔤🍉🍉🍉🍊a🍇😀🔤'==========''🔤🍉🍓🍇😀🔤''=========='🔤🍉🍉🍉

Có 2 đối số: đầu tiên là các dòng, thứ hai là hướng (0 hoặc 1).

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

Phiên bản không đọc được "đọc được" và phiên bản mã giả:

🐋 🚂 🍇
  🐖 🐟  d 🚂  🍇
    🍦 a  😛 0 d

    🍊 a 🍇
      😀 🔤 __________❌n(__________@%🔤
    🍉
    🍓 🍇
      😀 🔤  __________❌n%@__________)🔤
    🍉

    🔂 i ⏩ 0 🐕 🍇
      🍊 a 🍇
        😀 🔤|<*)_____><||🔤
      🍉
      🍓 🍇
        😀 🔤||><_____(*>|🔤
      🍉
    🍉

    🍊 ▶️ 4 🐕 🍇
      🔂 i ⏩ 0  ➖ 3 🐕  🍇
        🍊 a 🍇
          😀 🔤|          ||🔤
        🍉
        🍓 🍇
          😀 🔤||          |🔤
        🍉
      🍉
    🍉

    🍊 a 🍇
      😀 🔤'==========''🔤
    🍉
    🍓 🍇
      😀 🔤''=========='🔤
    🍉
  🍉
🍉

👵
extendclass int { // this makes the first argument be an int without declaring it
  func 🐟(int d) {
    const a = 0 == d // a bool

    if a {
      print " __________\n(__________@%"
    }
    else {
      print "  __________\n%@__________)"
    }

    for i in range(1, arg) {
      if a {
        print "|<*)_____><||"
      }
      else {
        print "||><_____(*>|"
      }
    }

    if 4 > arg {
      for i in range(0, arg - 3) {
        if a {
          print "|          ||"
        }
        else {
          print "||          |"
        {
      }
    }

    if a {
      print "'==========''"
    }
    else {
      print "''=========='"
    {
  }
}
👵

2
Không bao giờ đi qua Biểu tượng cảm xúc trước đây nhưng đó là một tâm trí f ** k và một nửa ... Crazy! Yêu nó!
WallyWest

... tại sao ngôn ngữ này thậm chí còn tồn tại? Ý tôi là, tôi thích nó, nhưng tại sao? và bạn mất bao lâu để học nó?
Taylor Scott

1
@TaylorScott 1) ​​dunno, tôi đã không tạo ra nó. 2) một vài giờ thực sự
betseg

6

Python 2 , 155 byte

lambda x,y,t='_'*10:'\n'.join(x[::1-2*y]for x in[' %s  '%t,'()'[y]+t+'@%']+['|'+('<>**)(%s><<>'%t)[y::2]+'||']*x+['|'+' '*10+'||']*(3-x)+["'"+'='*10+"''"])

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

Đầu vào bao gồm một chiều dài 2 tuple. Yếu tố đầu tiên cho biết số lượng cá mòi. Phần tử thứ hai chỉ hướng; 0cho trái, 1phải

-84 byte sử dụng phép thuật lambda nhờ notjagan và Officialaimm


1
174 byte (sorta got ninja'd by @officialaimm there).
notjagan

1
Giảm xuống còn 161 byte!
notjagan


1
@officialaimm một cách đầy đủ, nếu được cung cấp một giá trị âm, nó sẽ mở rộng kích thước của hộp thiếc, nhưng không đặt cá mòi vào.
Pavel

3
@Phoenix Có. Mặc dù vậy, điều đó không quan trọng, vì OP đã chỉ định phạm vi 0 to 10. PS` -10` sẽ in thiếc rỗng, vì nó biểu thị rằng có 10cá mòi, nhưng bạn đã ăn chúng. : D
chính thức tuyên bố

5

Câu cá , 1311 byte

v+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC?CCCDCC[CCCCCCCCCCCCCCCCCCCCC?CCCCCCCCCCCCCCCCCCCC[CCC[CCCCC?CCCC?DDDDD[CCCCCCCCCCCCCCCCCCC?CCCCCCCCCCCCCCCCC[?CCCCCCCCCCCCCCCC_
  `3`n{n{In{I{`L`{`  __________ `}}!{{rD}}D{{NE`%@__________)`}}!{{E`(__________@%`}}D{{NDE}}}}={d}}!  d  D{{{{{`><_____(*>`}}!{{E`<*)_____><`}}D!{{{E`|`P}PE`||`ND
                                   [DDDDDD|                     [DDDDDDDDDDDDDDDDDDDD|   D     [C?CDDDDDDDDCCCCCCCCCCCCCCCCCCC[DDDDDDDDDDDDDDDDD|[CCCCCCCCCCCCCCCC_
                                                                                         D      }=d [^+Cv-|{{{{{`          `}}                    {{{E`||`P}PE`|`ND
                                                                                         D       [CCCCCCCCCCCCCCCCCCC?DDDDDDDDD+CCCC                              D
                                                                                         D        E`''=========='`{{{= }}}r{{{ [CCCC                              D
                                                                                         D                           [^CCCCCCCv|}}}N                              D
                                                                                         |DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD]

Lấy đầu vào từ stdintrong biểu mẫu:

5
R

Câu cá không có trên Try It Online , nhưng có một thông dịch viên cho nó trong Ruby trên trang esolangs được liên kết.

Đây là chương trình đầu tiên tôi thực hiện trong Câu cá - thực tế, đây là chương trình đầu tiên tôi thực hiện bằng bất kỳ ngôn ngữ 2D nào - vì vậy có lẽ nó có thể ngắn hơn rất nhiều. Lời khuyên chơi gôn được hoan nghênh (mặc dù tôi sẽ không ngạc nhiên nếu không ai đưa ra, xem xét rằng thậm chí tôi không biết cái quái gì tôi vừa viết).

Đây là một GIF của đường dẫn mà chương trình đưa vào đầu vào 1R(xin lỗi vì chất lượng thấp):

QUÀ TẶNG

(Điều này được tạo bằng cách sử dụng một trình thông dịch mà tôi đã thực hiện; không có chương trình nào có sẵn công khai "trực quan hóa" Câu cá, theo như tôi biết)


Cú pháp C và D có vẻ như nó góp phần vào sự phình to ... Có bất kỳ tốc ký nào có sẵn để giảm bớt điều đó không?
WallyWest

Trên thực tế, có vẻ như chúng không thể tách rời với mã ... Lựa chọn ngôn ngữ thú vị! :)
WallyWest

4

Than , 49 byte

A⌈⟦Iθ³⟧ζBχ²_←↓(↓ζ'×=χ''↖P↑ζ←↑ζ@%FN“#∨‹VB“«ji”FN‖T

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Đối số đầu tiên là số lượng cá mòi, thứ hai là hướng (0 = trái, 1 = phải).


Làm tốt lắm, Neil. Cảm ơn đã cung cấp một liên kết trình biên dịch!
WallyWest

2
Đừng cảm ơn tôi, cảm ơn @Dennis vì đã tạo TIO tạo ra tất cả các mẫu soạn sẵn cho bạn.
Neil

3

SOGL V0.12 , 51 48 byte

!gX⁴‘gj⁰%!⁵‘b⌡"κN╥█*≤⌡║)‘3b-"÷AZ⁴‘∙_"Χccσ«‘⁰e?±↔

Hãy thử nó ở đây!
Yêu cầu đầu vào là số 1 là số đếm và số thứ hai - bên trái hoặc bên phải được biểu thị bằng 1 hoặc 0.

Giải trình:

..‘..‘                          push 2 compressed strings - the 1st two lines of the box - "  __________ " and "%@__________)"
      b⌡                        input times do
        "..‘                      push a line with a sardine - "||><_____(*>|"
            3b-                 push 3-input
               "..‘∙            get an array of that many "||          |"
                    _           put all the arrays contents on the stack
                     "..‘       push "''=========='" - the last line
                         ⁰      wrap all of that in an array
                          e?    if the 2nd input [is not 0]
                            ±↔    reverse the array horizontally

2

R, 334 byte 311 byte

s=function(n,d){
a="__________"
b="'=========='"
if(d == "L"){cat(paste(c(" ",a,"\n(",a,"@%\n",rep("|<*)_____><||\n",n),rep("|          ||\n",max(c(3-n,0))),b,"'\n"),collapse=""))} else {cat(paste(c("  ",a,"\n%@",a,")\n",rep("||><_____(*>|\n",n),rep("||          |\n",max(c(3-n,0))),"'",b,"\n"),collapse=""))}}

Hàm lấy một giá trị số cho n và một chuỗi cho hướng.

Đây là lần đầu tiên tôi đăng bài, vì vậy tôi sẽ thừa nhận rằng tôi không chắc cách đếm byte mã.


1
Bạn có thể dán mã của mình vào TIO , nơi mọi người cũng có thể kiểm tra mã của bạn :) nó cũng hiển thị số byte của bạn, là 310 trong trường hợp này.
Ian H.

2

C ++, 307 296 292 byte

#include<string>
auto z(int n,char c){std::string r=c-82?" __________\n(__________@%\n":"  __________\n%@__________)\n";int l=0;for(;l<n;++l)r+=c-82?"|<*)_____><||\n":"||><_____(*>|\n";for(;l<3;++l)r+=c-82?"|          ||\n":"||          |\n";r+=c-82?"'==========''":"''=========='";return r;}

Sử dụng :

z(<number of sardines>,<'L' or 'R'>);

-11 byte được lưu nhờ người dùng ThePirateBay -4 byte nhờ Zacharý


1
Bạn có thể loại bỏ dấu ngoặc đơn trong #definechỉ thị? Tôi đã không kiểm tra nó nhưng có vẻ như không cần chúng.

1
c!=82thể c-82trong mọi trường hợp bạn sử dụng nó?
Zacharý

1

Python 2 , 287 byte

n,d=input()
t,a,b,c,e,k=' __________   ','(__________@% ','|<*)_____><|| ','|          || ',"'=========='' ",'\n'
print[t+k+a+k+k.join([b]*n)+k+k.join([c]*(3-n))+k*(n<3)+e,t[::-1]+k+a[::-1].replace(*'()')+k+k.join([b[::-1].replace(*')(')]*n)+k+k.join([c[::-1]]*(3-n))+k*(n<3)+e[::-1]][d]

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

Đầu vào là một bộ số được phân tách bằng dấu phẩy của định dạng này : 2, 1. Số đầu tiên là số lượng cá và số thứ hai là 0 cho bên trái và 1 cho bên phải.

Điều này bắt đầu như một nỗ lực để ra ngoài câu trả lời khác (tôi hoàn toàn nghĩ rằng tôi có thể), nhưng nó rất tệ. : P Nếu bất cứ ai cũng có thể tạo ra đầu và đuôi của nó và giúp đánh gôn (tôi đổ lỗi cho việc đó là 12 giờ sáng), tôi rất vui.


Tuy nhiên, nỗ lực lớn!
WallyWest

1

C # (.NET Core), 289 byte

(h,d)=>{var l=d=='L';string r=(l?" ":"  ")+"__________\n"+(l?"(":"%@")+"__________"+(l?"@%":")")+"\n";for(int i=0;i<(h>3?h:3);i++){r+=(l?"|":"||")+(i<h?(d=='L'?"<*)_____><":(d=='R'?"><_____(*>":"")):"          ")+(l?"||":"|")+'\n';}var b=(l?"'":"''")+"=========="+(l?"''":"'");return r+b;}

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

Lấy một số nguyên và một char (L, R) làm tham số và xuất chuỗi kết quả.

Ừ Phải đối phó với một số hằng chuỗi gây phiền nhiễu, thật đáng buồn là bạn không thể làm string * lengthtrong C #. Và phương thức new string(char, length)không có giá trị byte.


Các thuật toán hoạt động như sau:

  1. Khi bắt đầu, chúng tôi xác định xem cá mòi quay mặt phải hay trái, vì sau đó chúng tôi sẽ định dạng chuỗi của chúng cho phù hợp. Chúng tôi tạo một chuỗi cho đỉnh, với một số toán tử có điều kiện để chuyển giữa phối cảnh L và R.
  2. Sau đó, chúng tôi tạo ra một vòng lặp chạy tối thiểu 3 lần và thời gian đầu vào bên trái tối đa. Bằng cách đó, chúng tôi có thể tạo các khoảng trống nếu chúng tôi có ít hơn 3 con cá mòi trong hộp của chúng tôi.
  3. Trong vòng lặp này, chúng tôi định dạng một chuỗi, tùy thuộc vào phối cảnh và ngoài ra, nếu h > i, chúng tôi đặt một con cá mòi bên trong nó. Nếu i >= h, sẽ có một khoảng trống nơi cá mòi thường có.
  4. Cuối cùng, chúng ta tạo đáy hộp, một lần nữa được định dạng theo phối cảnh.

1

Perl 5 , 167 + 1 (-n) = 168 byte

($n,$d)=/(\d+)([LR])/ or die;say('R'eq$d?(reverse$_)=~y/()></)(<>/r:$_)for" __________  ","(__________@%",("|<*)_____><||")x$n,("|          ||")x(3-$n),"'==========''"

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


1

JavaScript (ES6), 283 273 269 251 byte

Đã lưu 10 byte nhờ @WallyWest

Đã lưu 4 byte loại bỏ các parens phụ

Đã lưu 18 byte nhờ @ThePirateBay

Đau khổ vì thiếu sự đảo ngược chuỗi trong thư viện tiêu chuẩn. Xác định hàm lấy đầu vào ncho số lượng cá và dhướng. Ném nếu dkhông phải là "L" hoặc "R".

(n,d,_=c=>c.repeat(10),x=_(`_`),z=a=>a.reverse``.join``)=>
([p,q,g,r,s]=d>`L`?d>`R`?[]:[`)`,`(`,`>`,z,y=>z(y.split``)]:
[`(`,`)`,`<`,a=>a.join``,y=>y],` ${x}
`+r([p,x,s(`@%`)])+`
`+(r([`|`,g,`*`,q,`_____`,`><`,`||`])+`
`).repeat(n)+r([`'`,_(`=`),`''`]))

Dùng thử trực tuyến


Chào mừng đến với PPCG! Chúng tôi hy vọng bạn thích nó ở đây ... Hãy xem những gì chúng tôi có thể làm để đánh bại điểm số của bạn ... Nỗ lực bắt đầu tuyệt vời!
WallyWest

@WallyWest cảm ơn! Cạo sạch 17 byte khác bằng cách kéo ra một hàm và thay đổi các if...else ifternary lồng nhau bằng một phép gán hủy. Tôi không có ý tưởng nào cả ...
Jared Smith

1
@WallyWest Tôi sử dụng _hàm hai lần, một lần cho 10 dấu gạch dưới (được sử dụng hai lần), một lần cho 10 dấu bằng, vì vậy việc có nó trong hàm giúp tôi tiết kiệm một byte. Và trừ khi tôi sử dụng các chuỗi mẫu sai, sử dụng chúng thay vì nối là 3 byte nữa .
Jared Smith

1
@WallyWest cảm ơn vì tiền boa, và loại bỏ một số parens không cần thiết đã lưu 14 byte.
Jared Smith

1
@ Zacharý đã xong. Nếu tôi không thích làm cho người lạ trên internet hạnh phúc, tôi sẽ không tham gia SE ngay từ đầu.
Jared Smith
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.