Xuất ra một số từ dành riêng


9

Đối với ngôn ngữ máy tính, một từ dành riêng là một từ không thể được sử dụng làm định danh, chẳng hạn như tên của một biến, hàm hoặc nhãn. Đối với các ngôn ngữ máy tính khác, từ khóa có thể được coi là tập hợp các hướng dẫn ngôn ngữ.

Thử thách

Sử dụng ngôn ngữ bạn chọn, viết mã bằng ngôn ngữ đã chọn có số từ một đến mười 1<=n<=10, xuất ra bất kỳ ntừ dành riêng (từ khóa) nào của ngôn ngữ đã chọn.

Cụ thể

  • Nếu ngôn ngữ được chọn là trường hợp nhạy cảm, các từ khóa xuất ra cũng phải.
  • Nếu ngôn ngữ được chọn không phân biệt chữ hoa chữ thường, từ khóa xuất ra có thể trong mọi trường hợp.
  • Nếu ngôn ngữ được chọn có ít hơn 10 từ khóa nói p, mã phải xuất ra tất cả các từ dành riêng cho bất kỳ ntừ nào giữa p10.
  • Nếu có thể chỉ định trong câu trả lời cho dù bạn coi các toán tử là từ khóa hay không.

Các mẫu có thể cho Java (JDK10)

  • n=1 --> true
  • n=3 --> try new interface
  • n=4 --> continue this long break

Các mẫu có thể cho> <>

  • n=1 --> >
  • n=3 --> > < ^
  • n=4 --> > < \ /

Các mẫu có thể cho Brain-Flak

  • n=1 --> (
  • n=3 --> ( ) [ ]
  • n=9 --> ( ) [ ] { } < >

Quy tắc

  • Đầu vào và đầu ra có thể được đưa ra trong bất kỳ định dạng thuận tiện .
  • Không cần xử lý các giá trị đầu vào không hợp lệ , các đầu vào hợp lệ là: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
  • Hoặc là một chương trình đầy đủ hoặc một chức năng được chấp nhận. Nếu một chức năng, bạn có thể trả lại đầu ra thay vì in nó.
  • Nếu có thể, vui lòng bao gồm một liên kết đến môi trường thử nghiệm trực tuyến để người khác có thể thử mã của bạn!
  • Sơ hở tiêu chuẩn bị cấm.
  • Đây là để áp dụng tất cả các quy tắc chơi gôn thông thường và mã ngắn nhất (tính bằng byte) sẽ thắng.

Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Mego

2
continue this long breakTôi ước! Đó là lý do tôi tham gia SE!
Stan Strum

các số nguyên được bảo lưu nhưng tôi đoán đó sẽ là một lỗ hổng.
snoram

Câu trả lời:


7

APL (Dyalog Unicode) , 9 byte SBCS

Chương trình đầy đủ. Nhắc stdin cho n(thực sự hoạt động cho phạm vi 0 trận29). Từ khóa APL là các ký hiệu ký tự đơn, do đó, các ký hiệu này sẽ in ra ncác thiết bị xuất chuẩn.

⎕↑156↓⎕AV

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

⎕AV Vector nguyên tử (tức là bộ ký tự)

156↓ bỏ 156 yếu tố đầu tiên

⎕↑ nhắc nvà lấy nhiều yếu tố từ trên


5

Python 2 , 25 byte

lambda n:'=+*/%&^|<>'[:n]

Một hàm không tên chấp nhận một số nguyên trong [1,10] sẽ trả về một chuỗi các toán tử nhị phân một byte.

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

Các nhà khai thác:

=  Assign
+  Addition
*  Multiplication
/  Division
%  Modulo
&  Bitwise-AND
^  Bitwise-XOR
|  Bitwise-OR
<  Less Than?
>  Greater Than?

Nếu chỉ cho phép các từ khóa thực tế: 40 byte

from keyword import*
lambda n:kwlist[:n]

Hàm không tên chấp nhận một số nguyên trong [1,10] sẽ trả về danh sách các chuỗi.

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

Mã phải khá đơn giản - nó xác định một hàm lấy một đối số, nbằng cách sử dụng lambda n:...trả về n( ...[:n]) đầu tiên của các từ khóa đã biết bằng cách sử dụng thư viện chuẩn keywords.kwlist(cùng với kỹ thuật chơi gôn tiêu chuẩn import*).


điểm rất nhỏ nhưng chắc chắn =là "Bài tập" cũng như =="Kiểm tra sự bình đẳng"
Noodle9

Rất tiếc, bắt tốt, cảm ơn @ Noodle9
Jonathan Allan

Lạ xuống bầu! Chỉnh sửa: Ai đó đã quyết định tất cả các câu trả lời ở đây xứng đáng được bỏ phiếu. LOL
Jonathan Allan

Chắc chắn không phải là tôi - tôi thích câu trả lời của bạn và nâng cao nó! :)
Noodle9

4

Java 10, 83 72 byte (từ khóa)

n->"do   if   for  int  new  try  var  byte case char ".substring(0,n*5)

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

Câu trả lời cũ 83 byte:

n->java.util.Arrays.copyOf("do if for int new try var byte case char".split(" "),n)

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

Giải trình:

n->                         // Method with integer parameter and String-array return-type
  java.util.Arrays.copyOf(  //  Create a copy of the given array:
    "do if for int new try var byte case char".split(" ") 
                            //   The keywords as String-array,
    ,n)                     //   up to and including the given `n`'th array-item

Danh sách các từ khóa có sẵn cho Java 8. Java 10 có thêm từ khóa varnày.


Java 8+, 30 byte (toán tử)

n->"+-/*&|^~<>".substring(0,n)

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


3

Thạch , 3 byte

ØAḣ

Một liên kết đơn âm chấp nhận một số nguyên và trả về một danh sách các ký tự.

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

Các ký tự kết quả là tất cả các nguyên tử đơn nguyên trong trang mã của Jelly :

A   Absolute value.
B   Convert from integer to binary.
C   Complement; compute 1 − z.
D   Convert from integer to decimal.
E   Check if all elements of z are equal.
F   Flatten list.
G   Attempt to format z as a grid.
H   Halve; compute z ÷ 2.
I   Increments; compute the differences of consecutive elements of z.
J   Returns [1 … len(z)].

Làm sao?

ØAḣ - Link: integer n (in [1,10])
ØA  - yield uppercase alphabet = ['A','B','C',...,'Z']
  ḣ - head to index n

Ồ - tôi thấy ai đó đã quyết định bỏ phiếu TẤT CẢ các câu trả lời; thể thao thế nào!
Jonathan Allan

Hãy nghĩ rằng câu trả lời này xứng đáng được nâng cao quá! :)
Noodle9

3

Than , 16 byte

✂”yPBG¤T⎚M↶↷J”⁰N

Quá tệ, không có biến đặt trước cho trang mã riêng của nó trong Char than.

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

Giải trình:

Nhận một chuỗi con từ chỉ số 0 đến số đầu vào:

Slice("...",0,InputNumber)
✂”y...”⁰N

Chuỗi có 10 từ khóa:

”yPBG¤T⎚M↶↷J”

Tôi giả sử các chữ cái toàn băng thông có mã ký tự liên tiếp để bạn chỉ có thể in những ký tự đầu tiên n, mà tôi có thể làm trong 8 byte.
Neil

@Neil Nhưng mười trong số các ký tự liên tiếp đó được sử dụng làm lệnh / toán tử? Các ví dụ không được sử dụng ở tất cả ngay bây giờ, phải không? (Ngoại trừ kết hợp với KAhoặc ⌕A.)
Kevin Cruijssen

Trên thực tế là một lệnh và toán tử, nhưng không phải là một lệnh tốt, vì nó có thể gây nhầm lẫn giữa FindFindAll, nhưng sau đó bạn lại bị kẹt lại chỉ được sử dụng làm công cụ sửa đổi, sau đó không được sử dụng, điều này hạn chế bạn. Chữ cái Hy Lạp thì sao?
Neil

Đừng bận tâm, đó là các biến, không phải là lệnh, tôi đoán vậy.
Neil

3

Perl 5 -lp , 24 byte

#!/usr/bin/perl -lp
$_=(grep!eval,a..zz)[$_]

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

Dễ dàng mở rộng đến từ khóa hơn và lâu hơn, nhưng bạn sẽ cần phải làm vỏ đặc biệt bắt đầu từ 4 chữ bởi vì bạn sẽ gặp vấn đề với dump, eval, exit, getcvv ..

Tất nhiên, chỉ xuất ra các toán tử và sigils là nhàm chán nhưng ngắn hơn ở mức 11 byte:

#!/usr/bin/perl -lp
$_=chr$_+35

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

(Tôi đã bỏ qua #vì không rõ tôi nên phân loại nó như thế nào trong bối cảnh của thử thách này)


3

JavaScript (Node.js) , 79 61 byte

n=>'true int var for in if new try of do'.split` `.slice(0,n)

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

Làm sao :

n =>         // the input (will be an integer) between 1 and 10 (both inclusive)
    '        // beginning our string 
        true int var for in if new try of do'. // space separated reserved words
    split` `.        // turn it into an array every time there is a space we add to array
    slice(0,n)      // return elements of array starting from 0 and upto n

Nếu việc sử dụng toán tử được cho phép (rất có thể là vì chúng là các từ dành riêng) thì:

JavaScript (Node.js) , 26 25 byte

n=>'|/^%+<&*-='.slice(-n)

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

Đã lưu 8 byte nhờ @Adam và thêm 1 byte nhờ @ l4m2

Làm sao :

n =>     // input (integer from 0-9 inclusive)
    '|/^%+<&*-='.    // operators make a shorter string 
        slice(-n)   // outputs string chars from last upto n 
            // this works since all operators are single chars and not multi chars.


Oh yeah, Lol vẫn chơi golf. Cảm ơn @ Adám. Cảm kích điều đó.
Muhammad Salman

3
Tôi không nghĩ intlà một "từ dành riêng" theo định nghĩa trong thử thách. Bạn chắc chắn có thể đặt tên cho một biến inttrong JavaScript.
kamoroso94

1
Nếu tôi nhớ rõ, intđược dành riêng như một từ khóa có thể trong tương lai bởi đặc tả ECMAScript.
BNilsou

Tại sao substrthay vì slice?
l4m2

3

Ruby , 22 byte

->n{'+-*/%&|^<>'[0,n]}

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

-2 byte nhờ @ benj2240


Đồng ý. Sẽ cập nhật câu trả lời của tôi.

String#[]có quá tải hai đối số mà bạn có thể sử dụng cho -2 byte:[0,n]
benj2240

pkhông phải là một từ dành riêng, &nên hoạt động
Asone Tuhid

@AsoneTuhid: p cũng được sử dụng để in, nhưng Bạn nói đúng tôi có thể thay thế nó. Cảm ơn

@ Inoone Có nhưng đó là một phương thức, bạn có thể xác định lại nó và bạn có thể tạo một biến có tên psẽ được truy cập thay vì gọi phương thức không có biến ( p = 1; p p #=> 1)
Asone Tuhid

2

Bình thường , 4 byte

>QPG

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

Thật không may, nhiều chữ cái là biến ( GHJKNQTYZbdkz).

p  <any>                  Print A, with no trailing newline. Return A.
q  <any> <any>            A == B
r  <str> 0                A.lower()
r  <str> 1                A.upper()
r  <str> 2                A.swapcase()
r  <str> 3                A.title()
r  <str> 4                A.capitalize()
r  <str> 5                string.capwords(A)
r  <str> 6                A.strip() - Remove whitespace on both sides of A.
r  <str> 7                Split A, eval each part.
r  <seq> 8                Run length encode A. Output format [[3, 'a'], [2, 'b'], [1, 'c'], [1, 'd']].
r  <str> 9                Run length decode A. Input format '3a2bcd' -> 'aaabbcd'
r  <seq> 9                Run length decode A. Input format [[3, 'a'], [2, 'b'], [1, 'c'], [1, 'd']].
r  <int> <int>            Range, half inclusive. range(A, B) in Python, or range(A, B, -1).
r  <str> <str>            String range. r(C(A), C(B)), then convert each int to string using C.
r  <int> <seq>            r(B, A)
s  <col(str)>             Concatenate. ''.join(A)
s  <col>                  reduce on +, base case []. (Pyth +)
s  <cmp>                  Real part. A.real in Python.
s  <num>                  Floor to int. int(A) in Python.
s  <str>                  Parse as int. "" parses to 0. int(A) in Python.
t  <num>                  A - 1.
t  <seq>                  Tail. A[1:] in Python.
u  <l:GH> <seq/num> <any> Reduce B from left to right, with function A(_, _) and C as starting value. G, H -> N, T ->. A takes current value, next element of B as inputs. Note that A can ignore either input.
u  <l:GH> <any> <none>    Apply A(_, _) until a result that has occurred before is found. Starting value B. A takes current value, iteration number as inputs.
v  <str>                  Eval. eval(A) without -s, ast.literal_eval(A) with -s (online). literal_eval only allows numeric, string, list, etc. literals, no variables or functions.
w                         Take input. Reads up to newline. input() in Python 3.
x  <int> <int>            Bitwise XOR. A ^ B in Python.
x  <lst> <any>            First occurrence. Return the index of the first element of A equal to B, or -1 if none exists.
x  <str> <str>            First occurrence. Return the index of the first substring of A equal to B, or -1 if none exists.
x  <non-lst> <lst>        All occurrences. Returns a list of the indexes of elements of B that equal A.
x  <str> <non-lst>        First occurence. Return the index of the first substring of A equal to str(B), or -1 if none exists.
y  <seq>                  Powerset. All subsets of A, ordered by length.
y  <num>                  A * 2.

2

C # .NET, 76 62 byte (từ khóa)

n=>"as  do  if  in  is  for int new out ref ".Substring(0,n*4)

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

Câu trả lời cũ 76 byte:

using System.Linq;n=>"as do if in is for int new out ref".Split(' ').Take(n)

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

Giải trình:

using System.Linq;  // Required import for Take
n=>                 // Method with integer parameter and IEnumerable<string> return-type
  "as do if in is for int new out ref".Split(' ') 
                    //  The keywords as string-array,
  .Take(n)          //  and return the first `n` items

Danh sách các từ khóa có sẵn trong C # .NET.


C # .NET, 30 byte (toán tử)

n=>"+-/*&|^~<>".Substring(0,n)

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


2

Bùa chú , 52 byte

Điều này xuất ra tất cả các từ dành riêng trong Charm.

" [  := :: \"   " 0 2 copyfrom 3 * substring pstring

Vì tất cả các mã không đệ quy trong Charm đều có khả năng nội tuyến, đây là một hàm ẩn danh. Gọi như thế này:

4 " [  := :: \"   " 0 2 copyfrom 3 * substring pstring 

(đầu ra [ := :: ", chỉ có bốn từ dành riêng.)


Đặt tên cho hàm này thêm 5 byte:

f := " [  := :: \"   " 0 2 copyfrom 3 * substring pstring

2

Brain-Flak , 122 120 byte

({}<((((((((((((((()()){}()){}){}){})())[][]){}())()())[(([][]){}){}()])()())){}())[()()])>){({}<{({}<>)(<>)}{}>[()])}<>

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

Chỉ cần làm phần của tôi để điền vào các ngôn ngữ ví dụ. Đầu ra ()[]<>}{, bật ra phía trước cho số nhỏ hơn 8.


2

Unary, 6072204020736072426436 378380483266268 byte

+[>+<+++++]>---. (0o12602122222703334)

Cảm ơn Jo King vì đã giảm 99.999993768646738908474177860631%


1
Số byte có đúng không?
mdahmoune

@mdahmoune Tôi nghĩ vậy
l4m2

!! Nó rất lớn
mdahmoune

@mdahmoune Nó thực sự khá ' nhỏ ' đối với Unary. ;) Nếu bạn tìm kiếm các câu trả lời khác của Unary hoặc Lenguage ở đây trên PPCG, có một số câu trả lời lớn hơn nhiều.
Kevin Cruijssen

,[.-]trong Lenguage phù hợp với yêu cầu?
l4m2


2

Ruby, 71 68 byte

->n{(?a..'zzz').reject{|x|begin;eval x+'=n';rescue Object;end}[0,n]}

Được rồi, không phải là cách tiếp cận ngắn nhất, nhưng quá vui để không đăng. Lập trình tìm thấy tất cả các chuỗi có tối đa ba chữ cái viết thường không thể gán cho. Có chính xác là 10 : ["do", "if", "in", "or", "and", "def", "end", "for", "nil", "not"].

Chỉnh sửa: Đã lưu 3 byte nhờ Asone Tuhid.


1
Thật tuyệt, bạn có thể tiết kiệm 3 byte bằng cách giải cứu Objectvì đó là siêu lớp củaException
Asone Tuhid

2

Japt , 3 byte

Trả về một chuỗi, với mỗi ký tự riêng lẻ là một tên phương thức trong Japt.

;îC

Thử nó

;Clà bảng chữ cái viết thường và îlặp lại cho đến khi chiều dài của nó bằng với đầu vào.


@Downvoter, bạn quên để lại bình luận! : \
Shaggy

Có vẻ như ai đó đã bỏ phiếu xuống tất cả các câu trả lời: /
mdahmoune


2

R , 76 62 60 57 byte

12 byte được lưu nhờ MickyT

5 byte được lưu nhờ snoram

cat(c("if","in",1:0/0,"for",F,T,"NULL","else")[1:scan()])

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

Không có nhiều từ dành riêng trong R nhưng đây là một trong những từ ngắn nhất để mã hóa. Chỉ có 9 ở đây, nhưng nếu một đầu vào 10được đưa ra, một giá trị còn thiếu NAsẽ được thêm vào cuối danh sách và được in.


Một số khoản tiết kiệm nhỏ nhanh chóng
MickyT

@MickyT cảm ơn! Nhận ra tôi có thể lưu trữ "NaN"như 0/0hoặc NaNcũng cho một vài byte.
Giuseppe

thay thế 1/0,0/0bằng 1:0/0.
snoram

2
@snoram ah, tuyệt vời! Và chào mừng bạn đến với PPCG! Tôi đang mong chờ câu trả lời đầu tiên của bạn ở đây! Hãy xem các mẹo chơi gôn trong R và thoải mái ping tôi trong trò chuyện! :-)
Giuseppe

Cảm ơn! @Giuseppe btw. 1[1:2]return [1] 1 NA=> bạn có thể bỏ qua NAtrong vectơ gốc ... nếu đầu vào của người dùng là 10 thì nó sẽ được nối vào cuối.
snoram


1

Khoảng trắng , 84 byte

[S S S T    S S S S S N
_Push_32][S N
S _Duplicate][T N
S S _Print_as_character][S N
S _Duplicate][T N
T   T   _Read_STDIN_as_integer][T   T   T   _Retrieve][S S S T  N
_Push_1][T  S S T   _Subtract][S N
S _Duplicate][N
T   S N
_If_0_Jump_to_Label_EXIT][S S S T   S S T   N
_Push_9][T  N
S S Print_as_character][S S S T N
_Push_1][T  S S T   _Subtract][N
T   S N
_If_0_Jump_to_Label_EXIT][S S S T   S T S N
_Push_10][T N
S S _Print_as_character][N
S S N
_Create_Label_EXIT]

Chữ cái S(dấu cách), T(tab) và N(dòng mới) được thêm vào dưới dạng chỉ tô sáng.
[..._some_action]chỉ thêm vào giải thích.

Khoảng trắng chỉ chứa ba 'từ khóa' hợp lệ: khoảng trắng, tab và dòng mới.

Giải thích bằng mã giả:

Print space
Integer i = STDIN as integer - 1
If i is 0:
  Exit program
Else:
  Print tab
  i = i - 1
  If i is 0:
    Exit program
  Else:
    Print new-line
    Exit program

Ví dụ chạy:

Đầu vào: 1

Command       Explanation                 Stack      Heap      STDIN    STDOUT   STDERR

SSSTSSSSSN    Push 32                     [32]
SNS           Duplicate top (32)          [32,32]
TNSS          Print as character          [32]                          <space>
SNS           Duplicate top (32)          [32,32]
TNTT          Read STDIN as integer       [32]       {32:1}    1
TTT           Retrieve                    [1]        {32:1}
SSSTN         Push 1                      [1,1]      {32:1}
TSST          Subtract top two (1-1)      [0]        {32:1}
SNS           Duplicate top (0)           [0,0]      {32:1}
NTSN          If 0: Jump to Label_EXIT    [0]        {32:1}
NSSN          Create Label_EXIT           [0]        {32:1}
                                                                                 error

Chương trình dừng với một lỗi: Không có lối ra được xác định.
Dùng thử trực tuyến (chỉ có khoảng trắng, tab và dòng mới).
Xuất ra một không gian duy nhất.

Đầu vào: 2

Command       Explanation                 Stack      Heap      STDIN    STDOUT   STDERR

SSSTSSSSSN    Push 32                     [32]
SNS           Duplicate top (32)          [32,32]
TNSS          Print as character          [32]                         <space>
SNS           Duplicate top (32)          [32,32]
TNTT          Read STDIN as integer       [32]       {32:2}    2
TTT           Retrieve                    [2]        {32:2}
SSSTN         Push 1                      [2,1]      {32:2}
TSST          Subtract top two (2-1)      [1]        {32:2}
SNS           Duplicate top (1)           [1,1]      {32:2}
NTSN          If 0: Jump to Label_EXIT    [1]        {32:2}
SSSTSSTN      Push 9                      [1,9]      {32:2}
TNSS          Print as character          [1]        {32:2}             \t
SSSTN         Push 1                      [1,1]      {32:2}
TSST          Subtract top two (1-1)      [0]        {32:2}
NTSN          If 0: Jump to Label_EXIT    []         {32:2}
NSSN          Create Label_EXIT           []         {32:2}
                                                                                 error

Chương trình dừng với một lỗi: Không có lối ra được xác định.
Dùng thử trực tuyến (chỉ có khoảng trắng, tab và dòng mới).
Xuất ra một khoảng trắng, theo sau là một tab.

Đầu vào: 3(hoặc cao hơn)

Command       Explanation                 Stack      Heap      STDIN    STDOUT   STDERR

SSSTSSSSSN    Push 32                     [32]
SNS           Duplicate top (32)          [32,32]
TNSS          Print as character          [32]                          <space>
SNS           Duplicate top (32)          [32,32]
TNTT          Read STDIN as integer       [32]       {32:3}    3
TTT           Retrieve                    [3]        {32:3}
SSSTN         Push 1                      [3,1]      {32:3}
TSST          Subtract top two (3-1)      [2]        {32:3}
SNS           Duplicate top (2)           [2,2]      {32:3}
NTSN          If 0: Jump to Label_EXIT    [2]        {32:3}
SSSTSSTN      Push 9                      [2,9]      {32:3}
TNSS          Print as character          [2]        {32:3}             \t
SSSTN         Push 1                      [2,1]      {32:3}
TSST          Subtract top two (2-1)      [1]        {32:3}
SSSTSTSN      Push 10                     [1,10]     {32:3}
TNSS          Print as character          [1]        {32:3}             \n
NSSN          Create Label_EXIT           []         {32:3}
                                                                                 error

Chương trình dừng với một lỗi: Không có lối ra được xác định.
Dùng thử trực tuyến (chỉ có khoảng trắng, tab và dòng mới).
Xuất ra một khoảng trắng, theo sau là một tab, theo sau là một dòng mới.


1

Brain-Flak , 118 byte

({}<(((((((((((()()()()()){}){}){})())(([][][])){}{}())()())([][][])[]{})()())[][][][][])()())>){({}<({}<>)<>>[()])}<>

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

# Push stuffs under the counter
({}<(((((((((((()()()()()){}){}){})())(([][][])){}{}())()())([][][])[]{})()())[][][][][])()())>)

# While True
{
    # Decrement the counter
    ({}<

        # Toggle a character
        ({}<>)<>
    >[()])
}

# Display alternate stack
<>

Điều này in thêm byte rỗng cho 9 và 10
Jo King



1

Haskell , 22 byte

(`take`"';,=\"@\\`|~")

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

Cảm ơn @Angs đã bắt lỗi từ khóa.

Tôi cảm thấy như thế này có thể ngắn hơn bằng cách tạo chuỗi thay vì xác định rõ ràng chuỗi đó, nhưng tôi không thể tìm thấy một phạm vi 10 ký tự ASCII liên tiếp là từ khóa Haskell (tôi đã tìm thấy một số từ gần, nếu bạn đếm từ khóa mở rộng ngôn ngữ). Nếu có một, bạn có thể giảm nó xuống 15 byte bằng cái này, thay thế %bằng ký tự bắt đầu:

(`take`['%'..])

Không có từ khóa tượng trưng:

Haskell , 58 byte

(`take`words"of in do let then else case data type class")

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


!không được bảo lưu, ví dụ như let a!b=a+bvẫn ổn
Angs

Rất tiếc, bạn đã đúng. Đã sửa cả hai phần, vì ascũng là một định danh hợp lệ.
dùng9549915

.cũng không được bảo lưu - không ai trong số các nhà khai thác khác trong khúc dạo đầu như vậy +- hãy xem điều này
Angs

1

C (gcc) , 62 60 byte

-2 nhờ GPS

f(n){puts("autocasecharelseenumgotolongvoidint do"+40-4*n);}

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

Ý tôi là ... không bao giờ có bất kỳ yêu cầu nào để thực sự tách các từ khóa.

Trong trường hợp tôi đọc sai - hoặc bạn quan tâm nhiều hơn đến điều gì đó theo tinh thần của câu hỏi - đây là phiên bản thay thế với các khoảng trắng tách biệt:

C (gcc) , 69 byte

f(n){puts("auto case char else enum goto long void int  do"+50-5*n);}

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


Bạn có cần hai không gian sau do?
Jo King

@JoKing Vâng, nếu không các ký tự rác có thể được viết.
dạ dày

Bạn có thể cắt khoảng trắng sau donếu bạn sử dụng các hàm đầu ra chuỗi. 69 byte: Tio
GPS


1

Taxi, 509 byte

"[]a lrnsew" is waiting at Writer's Depot. Go to Post Office: w 1 l 1 r 1 l. Pickup a passenger going to The Babelfishery. Go to The Babelfishery: s 1 l 1 r.Pickup a passenger going to The Underground.Go to Writer's Depot: n 1 l, 1 l, 2 l.Pickup a passenger going to Chop Suey.Go to Chop Suey: n, 3 r, 3 r.[a]Pickup a passenger going to Post Office.Go to Post Office: s 1 r 1 l 2 r 1 l.Go to The Underground: n 1 r 1 l.Pickup a passenger going to The Underground.Go to Chop Suey: n 2 r 1 l.Switch to plan "a".

Việc này sẽ lấy một chuỗi mã hóa cứng ở trên cùng và in các ký tự "n" từ chuỗi đó và sau đó báo lỗi "lỗi: không tìm thấy hành khách đi".

Chuỗi chứa:

  1. [], các ký tự được sử dụng để tuyên bố một kế hoạch
  2. a được sử dụng trong cú pháp "Đón một hành khách ...".
  3. Ký tự khoảng trắng, được yêu cầu tách các phần cú pháp
  4. lr, viết tắt của "trái" và "phải", được sử dụng để báo cho người lái biết đường nào để rẽ.
  5. n, s, e, Và w, bốn hướng.

Tôi tin rằng tất cả những người được coi là một từ khóa ký tự. Ung dung:

"[]a lrnsew" is waiting at Writer's Depot.
Go to Post Office: west, 1st left, 1st right, 1st left.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery: south, 1st left, 1st right.
Pickup a passenger going to The Underground.
Go to Writer's Depot: north, 1st left, 1st left, 2nd left.
Pickup a passenger going to Chop Suey.
Go to Chop Suey: north, 3rd right, 3rd right.
[print character]
Pickup a passenger going to Post Office.
Go to Post Office: south, 1st right, 1st left, 2nd right, 1st left.
Go to The Underground: north, 1st right, 1st left.
Pickup a passenger going to The Underground.
Go to Chop Suey: north, 2nd right, 1st left.
Switch to plan "print character".

1

J , 15 byte

[:u:46,"0~65+i.

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

Cung cấp một chuỗi các chuỗi A.để J..

Các từ chấm trong J đóng vai trò là các phần dựng sẵn (như a.hoặc A.) hoặc các cấu trúc điều khiển (như if.hoặc do.), hoặc đơn giản là ném lỗi chính tả. Không ai trong số họ có thể được sử dụng như định danh.

Ít thú vị hơn, 15 byte

{.&'!#$%^*-+=|'

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

Cung cấp một số trong 10 động từ một byte.


1

Bash và shell utils 20 byte

compgen -b|head -$1

Bạn có thể lưu nó trong một tệp có quyền thực thi (nội dung) và chạy nó trong bash như thế này:

$ ./builtins 5
 .
 : 
 [
 alias 
 bg  

Xuất ra bash N đầu tiên được xây dựng.

Nếu bạn đang chạy một số shell khác ngoài bash, bạn sẽ cần dòng shebang #! / Bin / bash ở đầu tệp, cho + 12b


1

QBasic, 60 byte

INPUT n
?LEFT$("CLS FOR DEF RUN DIM PUT GET SUB END IF",n*4)

Câu trả lời này phù hợp với tinh thần của câu hỏi tốt nhất, tôi tin rằng: xuất ra các từ khóa dành riêng cho bảng chữ cái với khoảng trắng ở giữa. Tôi không nghĩ các toán tử tượng trưng thực sự được tính là "từ" trong QBasic, nhưng để hoàn thiện, đây là câu trả lời 30 byte sử dụng toán tử:

INPUT n
?LEFT$("+-*/\^=><?",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.