Thêm mà không sử dụng dấu + hoặc -


24

Trước đây đã có nhiều thử thách "Làm __ không có _ _", nhưng tôi hy vọng rằng đây là một trong những thử thách nhất.

Các thách thức

Bạn phải viết một chương trình lấy hai số tự nhiên (số nguyên> 0) từ STDIN và in tổng của hai số thành STDOUT. Thách thức là bạn phải sử dụng càng ít +-dấu hiệu càng tốt. Bạn không được phép sử dụng bất kỳ chức năng tổng hợp hoặc phủ định nào.

Ví dụ

đầu vào

123
468

đầu ra

591

đầu vào

702
720

đầu ra

1422

Tie Breaker: Nếu hai chương trình có cùng số lượng +-ký tự, người chiến thắng là người có ít hơn / * ( ) = . ,0-9ký tự.

Không được phép: Các ngôn ngữ trong đó các toán tử cộng / trừ và tăng / giảm tiêu chuẩn là các ký hiệu khác +hoặc -không được phép. Điều này có nghĩa là khoảng trắng ngôn ngữ không được phép.


1
Có lẽ thử thách này dễ hơn nhiều so với tôi nghĩ, đặc biệt là trong các ngôn ngữ khác, nơi có các hàm sum (). Tôi phải sửa cái này
PhiNotPi

50
100 tiền thưởng cho bất cứ ai có thể làm điều này trong Brainfuck.
Peter Olson

3
@Peter Olson Chà, tôi đoán BF vẫn chưa hoàn thành nếu không có +hoặc -...
FUZxxl

3
Chỉ cần làm rõ, thách thức này không quan tâm đến độ dài mã phải không? Chỉ có số lượng +, -và ký tự ngắt kết nối? ... hoặc bạn cần thay đổi lại các quy tắc :-)
Tommy

@ Mẹ ơi, không.
PhiNotPi

Câu trả lời:


29

Perl (không +/-, không ngắt kết nối, 29 ký tự)

s!!xx!;s!x!$"x<>!eg;say y!!!c

Là một phần thưởng, bạn có thể làm cho mã tổng hợp nhiều hơn hai số bằng cách thêm nhiều xs vào s!!xx!.

Ngoài ra, đây là hai giải pháp 21 char với 1 và 3 break-break tương ứng

say length$"x<>.$"x<>

say log exp(<>)*exp<>

Lưu ý: Các giải pháp này sử dụng saychức năng, khả dụng kể từ Perl 5.10.0 với công -Etắc dòng lệnh hoặc với use 5.010. Xem lịch sử chỉnh sửa của câu trả lời này để biết các phiên bản hoạt động trên các bản cũ hơn.


Làm thế nào để giải pháp không có tie-breakers hoạt động?

  • s!!xx!là một toán tử thay thế regrec , hoạt động theo mặc định trên $_biến, thay thế chuỗi rỗng bằng chuỗi xx. (Thông thường /được sử dụng như delimiter regexp trong Perl, nhưng thực sự gần như bất kỳ ký tự có thể được sử dụng tôi đã chọn. !Vì nó không phải là một tie-breaker.) Đây chỉ là một cách ưa thích của prepending "xx"tới $_- hay, kể từ khi $_bắt đầu ra rỗng (không xác định, thực tế), đó thực sự là một cách để viết $_ = "xx"mà không sử dụng dấu bằng (và với một ký tự ít hơn).

  • s!x!$"x<>!eglà một thay thế regrec khác, lần này thay thế từng xtrong $_bằng giá trị của biểu thức $" x <>. (Công gtắc chỉ định thay thế toàn cục, echỉ định rằng thay thế sẽ được đánh giá là mã Perl thay vì được sử dụng dưới dạng chuỗi ký tự.) $"Là một biến đặc biệt có giá trị mặc định là một khoảng trắng; sử dụng nó thay vì " "tiết kiệm một char. (Bất kỳ biến nào khác được biết là có giá trị một ký tự, chẳng hạn như $&hoặc $/, sẽ hoạt động tốt như nhau ở đây, ngoại trừ việc sử dụng $/sẽ khiến tôi mất một bộ ngắt kết nối.)

    Các <> nhà khai thác dòng đầu vào , trong bối cảnh vô hướng, đọc một dòng từ đầu vào tiêu chuẩn và trả về nó. Các xtrước khi nó là Perl điều hành chuỗi lặp lại , và thực sự là cốt lõi của giải pháp này: nó trả về toán hạng trái của nó (một nhân vật không gian duy nhất) lặp đi lặp lại số lần do toán hạng bên phải (dòng chúng tôi chỉ đọc như đầu vào).

  • y!!!cchỉ là một cách tối nghĩa để (ab) sử dụng toán tử chuyển ngữ để đếm các ký tự trong một chuỗi ( $_theo mặc định, một lần nữa). Tôi chỉ có thể viết say length, nhưng phiên bản bị xáo trộn ngắn hơn một ký tự. :)


3
+1 - tuyệt vời và hoàn toàn không thể đọc được ;-) Đây dường như là câu trả lời hoàn hảo vì số lượng nhân vật không thành vấn đề trong thử thách này.
Tommy

@ Mẹ ơi, có những câu trả lời hoàn hảo khác nữa. Có lẽ chúng ta nên thúc đẩy số lượng nhân vật là kẻ phá vỡ cuối cùng.
Peter Taylor

@Peter: Theo mặc định, tôi đã giả sử nó là như vậy.
Ilmari Karonen

1
nếu số lượng ký tự là bộ ngắt kết nối cuối cùng và nhiều mục tồn tại được gắn với số 0 trong các danh mục khác, thì điều này có trở thành code-golfvới một số hạn chế về nguồn không?
Sparr

47

R (24 ký tự)

length(sequence(scan()))

Cái này làm gì

  • scan đọc đầu vào từ STDIN (hoặc một tệp)
  • sequencetạo các chuỗi số nguyên bắt đầu từ 1 và nối các chuỗi. Ví dụ: sequence(c(2, 3))kết quả trong vectơ1 2 1 2 3
  • length tính toán số phần tử trong vectơ nối

Ví dụ 1:

> length(sequence(scan()))
1: 123
2: 468
3:
Read 2 items
[1] 591

Ví dụ 2:

> length(sequence(scan()))
1: 702
2: 720
3:
Read 2 items
[1] 1422

1
Rất thông minh, làm tốt công việc.
Matthew Đọc

Điều này thổi vào tâm trí của tôi
smci

+/- và các bộ ngắt kết nối được đề cập ở trên là thú vị, không phải là nhân vật.
người dùng không xác định

Làm thế nào để nó tính chiều dài? mà không sử dụng bất kỳ bổ sung? Nếu vậy, tôi sẽ ngạc nhiên.
Tem Pora

2
@TemPora Câu hỏi chỉ giới hạn mã trong câu trả lời, không phải các thao tác được thực hiện phía sau hậu trường. Chúng tôi sẽ không hạn chế câu hỏi để kiến ​​trúc máy tính cơ bản không thể tăng đăng ký.
mbomb007

15

D

main(){
    int a,b;
    readf("%d %d",&a,&b);
    while(b){a^=b;b=((a^b)&b)<<1;}
    write(a);
}

xoay một chút để giành chiến thắng

như một phần thưởng, mã được biên dịch không chứa thao tác thêm (mặc dù không thể nói cho cuộc gọi readf)


12

Python 2, 43 byte

print len('%s%s'%(input()*'?',input()*'!'))

3
Rất sáng tạo, nhưng bạn có thể muốn thay đổi ký tự được sử dụng trong chuỗi thành một thứ khác không phải là bộ ngắt kết nối, chẳng hạn như "~"
3Doubloons

Cảm ơn lời khuyên của Alex, tôi đã quên mất quy tắc tie-breaker.
Omar

print sum(input(),input())
razpeitia

9
razpeitia: Tôi nghĩ rằng sum là một hàm "giống như tổng" và do đó không được phép.
Omar

6

GolfScript

Không có +/- hoặc tie-breakers:

# Twiddle some bits to get a few small integers
[]!~abs:two~abs:three!:zero~:minusone;

~[two base minusone%\two base minusone%]zip
zero:c;
{
    # Stack holds [x y] or [x] with implicit y is zero
    # Half adder using x y c: want to end up with sum on stack and carry back in c
    [~c zero]three<zero$
    ~^^\
    $~;:c;;
}%
[~c]minusone%two base

Phiên bản đơn giản hơn nhiều với hai ký tự ngắt kết nối, sử dụng cùng một thủ thuật nối danh sách mà người khác đang sử dụng:

~[\]{,~}%,

Tôi cho rằng GolfScript không đủ điều kiện để có )một toán tử gia tăng, vì tôi không thực sự sử dụng nó.


6

C (chỉ 32 bit)

int main(int ac, char *av) {
    scanf("%d\n%d", &ac, &av);
    return printf("%d\n", &av[ac]);
}

Số học con trỏ cũng tốt như vậy.
Làm thế nào để nó phù hợp với yêu cầu?
* Không có +hoặc -
* Không /, =, ., 0- 9
* Chỉ có 3 cặp ngoặc đơn, mà dường như với tôi tối thiểu (bạn cần main, scanf, printf).
* Một *(cách tiếp cận con trỏ yêu cầu nó).
* Bốn ,(có thể lưu một bằng cách xác định các biến thông thường, không ac,av)


6

C ++ 0 +/-, 3 bộ ngắt

#include <vector>
#include <iostream>

#define WAX (
#define WANE )
#define SPOT .

int main WAX WANE {
    unsigned x;
    unsigned y;
    std::cin >> x >> y;
    std::vector<int> v WAX x WANE;
    std::vector<int> u WAX y WANE;
    for WAX auto n : u WANE {
        v SPOT push_back WAX n WANE;
    }
    std::cout << v SPOT size WAX WANE;
}

5

Haskell, 0 + 2

import Monad
main = join $ fmap print $ fmap length $ fmap f $ fmap lines getContents
f x = join $ flip replicate [] `fmap` fmap read x

Điều này sử dụng không có +hoặc -ký tự, và chỉ có hai =từ bộ ký tự ngắt kết nối, một trong số đó là bắt buộc để ràng buộc main. Tổng được thực hiện bằng cách nối các danh sách có độ dài phù hợp.


4

EDIT Điều này đã được đăng TRƯỚC KHI các quy tắc được thay đổi thành không cho phép sum...

Ngôn ngữ R: Không có cuộc gọi đến +hoặc -... Và 9 ký tự ngắt kết nối!

sum(as.numeric(readLines(n=2)))

Thí dụ:

> sum(as.numeric(readLines(n=2)))
123
456
[1] 579

Các [1] 579là câu trả lời 579 (các[1] là để theo dõi các nơi trong vector kết quả của bạn là vì trong R tất cả các giá trị là vectơ - trong trường hợp này có độ dài 1)

Lưu ý rằng R có các +toán tử giống như hầu hết các ngôn ngữ - điều đó xảy ra đến mức nó sumcũng tổng hợp một loạt các vectơ.

Trong trường hợp này, readLinestrả về một vectơ chuỗi có độ dài 2. Sau đó, tôi ép nó thành số (nhân đôi) và tổng hợp lại ...

Chỉ để hiển thị một số tính năng khác của R:

> 11:20 # Generate a sequence
 [1] 11 12 13 14 15 16 17 18 19 20

> sum(1:10, 101:110, pi)
[1] 1113.142

1
+1 Để khiến tôi phải thay đổi các quy tắc để đặt ngoài vòng hàm sum ().
PhiNotPi

@PhiNotPi - Thay đổi quy tắc?! Như thế là gian lận! :-) ... Nhưng có lẽ bạn nên nói "tổng hợp như chức năng" hoặc tôi sẽ chỉ sử dụng colSumsđể thay thế ... Có lẽ cũng cấm "phủ định giống như chức năng" trong khi bạn ở đó ...
Tommy

2
Tôi sẽ lấy lời khuyên của bạn. Từ những gì tôi có thể nói, tất cả mọi người (bao gồm cả tôi) trên trang web này thích chỉ ra những sơ hở trong các quy tắc.
PhiNotPi

4

Ngôn ngữ R

Quy tắc mới, câu trả lời mới, cùng ngôn ngữ. Không có cuộc gọi đến +hoặc-

CẬP NHẬT Sử dụng scan, nó giảm xuống còn 11 ký tự ngắt (và tất cả 27 ký tự).

as.numeric(scan())%*%c(1,1)

Bản gốc: 13 nhân vật tie-breaker!

as.numeric(readLines(n=2)) %*% c(1,1)

Thí dụ:

> as.numeric(readLines(n=2)) %*% c(1,1)
123
456
     [,1]
[1,]  579

Lần này kết quả đạt được bằng cách nhân ma trận. Câu trả lời được hiển thị dưới dạng ma trận 1x1.


Tôi không thể làm gì để vượt qua điều này. Có lẽ R chỉ giỏi trong thử thách này, vì nó chủ yếu dựa trên toán học. Hoặc có thể thử thách này chỉ là dễ dàng.
PhiNotPi

+1 Đẹp. Bạn có thể làm điều này thậm chí ngắn hơn bằng scan()thay vìreadlines(n=2)
Andrie

@Andrie - có, nhưng sau đó bạn dựa vào người dùng nhập chính xác hai số ... Tôi đoán thử thách này là ổn ...
Tommy

4

Haskell, 0 +/ -, 6 2 break-break ( =)

(không sử dụng thủ thuật nối chuỗi / danh sách)

main = interact f
f x = show $ log $ product $ map exp $ map read $ lines x

Bạn có thể loại bỏ tất cả các dấu chấm với chi phí thêm = bằng cách thay thế bố cục: thay vì "fgh" viết "a trong đó ax = f $ g $ h x"
Omar

3

Javascript, 56

p=prompt;alert(Array(~~p()).concat(Array(~~p())).length)

Cảm ơn @JiminP về mẹo ~ ~! Tôi sẽ lấy ít byte nhất, vì vậy việc lưu 1 byte trên dấu nhắc p =; vẫn còn giá trị nó Tôi hiểu lập luận của bạn về ký tự ngắt kết nối, nhưng thành thật mà nói, bạn sẽ không phải là ít byte nhất :-p

Phiên bản, 69

i=parseInt;p=prompt;alert(Array(i(p())).concat(Array(i(p()))).length)

Nhờ một số phản hồi từ @Ilmari và @JiminP, tôi đã loại bỏ 13 byte khỏi giải pháp ban đầu của mình.

Nguyên văn, 82

i=parseInt;p=prompt;a=Array(i(p()));a.push.apply(a, Array(i(p())));alert(a.length)

Không gian đó sau dấu phẩy là hoàn toàn không cần thiết; loại bỏ nó sẽ đưa bạn xuống 81.
Ilmari Karonen

Sử dụng concatvà đưa các tính toán vào alertlà ngắn hơn. i=parseInt;p=prompt;alert(Array(i(p())).concat(Array(i(p()))).length) BTW, tôi không biết rằng Array(n)trả về một mảng có độ dài n. Bảng điều khiển Google Chrome đã cho tôi []và tôi nghĩ rằng không có gì ...
JiminP

1
Ồ, vì điều quan trọng là nhân vật tie-breaker, p=promptkhông tốt. Và, parseInt(x)gần như tương đương với ~~x. alert(Array(~~prompt())['concat'](Array(~~prompt()))['length'])(12 ký tự ngắt kết nối) PS. Tôi có thể sử dụng nó như mục nhập của tôi, nhưng điều đó chỉ mang lại cho tôi cảm giác ăn cắp.
JiminP

3

C

b[500];i;j;main(){scanf("%d%d",&i,&j);printf("%d\n",sprintf(b,"%*s%*s",i,"",j,""));

3

APL (không +/-, không ngắt kết nối, 8 hoặc 10 ký tự)

Mục này tương tự như các mục khác nối các chuỗi được tạo từ đầu vào và tìm độ dài ... nhưng nó ở APL, có thể gây nhầm lẫn ngay cả đối với một vấn đề nhỏ như thế này. Tôi đã sử dụng thuốc nhuộm APL , nơi cung cấp giấy phép giáo dục miễn phí.

Mã số:

⍴⊃⍪⌿⍳¨⎕⎕

Từ phải qua trái:

  • Mỗi quote-quad ( ) yêu cầu đầu vào từ người dùng và đánh giá nó.
  • Mỗi toán tử ( ¨) áp dụng hàm tạo chỉ mục ( ) cho từng mục trong mảng ở bên phải.
  • Điều này làm phẳng mảng kết quả của mảng thành một mảng. Mảng đầu vào được rút gọn thành một danh sách phẳng bởi toán tử khử ( /), nó gấp mảng bằng cách sử dụng hàm nối ( ,). Vì lợi ích của thách thức này, toán tử giảm một chiều ( ) được sử dụng, cùng với toán tử ghép dọc theo trục đầu tiên ( ).
  • Kết quả của việc sử dụng toán tử khử, mảng được bao quanh , giống như đặt nó trong túi; tất cả những gì chúng ta thấy ở bên ngoài là một cái túi, không phải nội dung của nó. Toán tử tiết lộ ( ) cung cấp cho chúng ta nội dung của mảng kèm theo (túi).
  • Cuối cùng, hình dạng của hàm ( ) cung cấp cho chúng ta độ dài của kích thước của một mảng. Trong trường hợp này, chúng tôi có một mảng một chiều, vì vậy chúng tôi có được số lượng các mục trong mảng, đó là kết quả của chúng tôi.

Nếu chúng ta cần xuất kết quả một cách rõ ràng, chúng ta có thể làm như vậy:

⎕←⍴⊃⍪⌿⍳¨⎕⎕

Mã Python có thể so sánh, với các ký hiệu APL tương ứng ở trên:

import operator

⎕←     ⍴    ⌿        ⍪                 ¨              ⍳                ⎕        ⎕         ⊃
print (len (reduce (operator.__add__, [map (lambda n: range (1, n+1), [input(), input()])][0])))

Tôi muốn biết nếu có một phiên bản ngắn hơn có thể có trong APL - một phiên bản khác đơn giản hơn mà tôi đã đưa ra có nhiều bộ ngắt kết nối hơn (mặc dù vẫn có 8 ký tự) là : ⍴(⍳⎕),⍳⎕.


Trình tạo chỉ mục của bạn bắt đầu từ 1 hay 0?
MrZander

3

Tôi không thấy ai làm theo cách của Kỹ thuật điện, vì vậy đây là của tôi (bằng ruby):

def please_sum(a, b)
    return (a&b !=0)? please_sum( ((a&b)<<1) , a^b ):a^b
end

Nó là một chút xấu xí, nhưng nó hoàn thành công việc. Hai giá trị được so sánh bằng một bitwise AND. Nếu chúng không có bất kỳ bit nào chung, sẽ không có "mang" vào cột nhị phân tiếp theo, vì vậy việc bổ sung có thể được hoàn thành bằng cách bit bit vào XORchúng. Nếu có một carry, bạn phải thêm carry vào bitwise XOR. Đây là một tập lệnh ruby ​​nhỏ mà tôi đã sử dụng để đảm bảo logic kỹ thuật số của mình không quá rỉ sét:

100.times do
    a=rand 10
    b=rand 10
    c=please_sum(a,b)
    puts "#{a}+#{b}=#{c}"
    end

Chúc mừng!



2

Vỏ, 52

read a
read b
(seq 1 $a;seq 1 $b)|wc|awk '{print$1}'

Đây là câu trả lời cơ bản giống như tôi đã đưa ra cho một vấn đề khác.


Tương tự: xargs -n1 jot | wc -l-mức giảm tương tự awknhưng tôi không thể thấy cách tránh nó trongxargs
Ben Jackson

+/- và các bộ ngắt kết nối được đề cập ở trên là thú vị, không phải là nhân vật.
người dùng không xác định

2

C

a,b;A(int a,int b){return a&b?A(a^b,(a&b)<<1):a^b;}
main(){scanf("%d%d",&a,&b);printf("%d\n",A(a,b));}

Tôi đếm 20 cái cà vạt ... Tôi có đúng không?
FUZxxl

2
22 bộ ngắt kết nối: 0 /*=., 7 (, 7 ), 7 ,, 1[0-9]
saeedn

2

C #

Nó không phải là ngắn nhất bởi bất kỳ căng:

private static int getIntFromBitArray(BitArray bitArray)
{
    int[] array = new int[1];
    bitArray.CopyTo(array, 0);
    return array[0];
}

private static BitArray getBitArrayFromInt32(Int32 a)
{
    byte[] bytes = BitConverter.GetBytes(a);
    return new BitArray(bytes);
}

static void Main(string[] args)
{
    BitArray first = getBitArrayFromInt32(int.Parse(Console.ReadLine()));
    BitArray second = getBitArrayFromInt32(int.Parse(Console.ReadLine()));
    BitArray result = new BitArray(32);

    bool carry = false;
    for (int i = 0; i < result.Length; i++)
    {
        if (first[i] && second[i] && carry)
        {
            result[i] = true;
        }
        else if (first[i] && second[i])
        {
            result[i] = false;
            carry = true;
        }
        else if (carry && (first[i] || second[i]))
        {
            result[i] = false;
            carry = true;
        }
        else
        {
            result[i] = carry || first[i] || second[i];
            carry = false;
        }
    }
    Console.WriteLine(getIntFromBitArray(result));
}

Thật mệt mỏi, Matthew.
Cary Swoveland

2

J, 15 7 ký tự, 1 bộ ngắt kết nối, chương trình chưa hoàn thành

Đây là nỗ lực J của tôi. Nó không phải là một chương trình đầy đủ, vì tôi chưa tìm ra cách viết. Chỉ cần đặt dòng đó trong một tập lệnh để có được chức năng pcó thể được sử dụng để thêm một số lượng tùy ý. Đây là một đơn nguyên và lấy một danh sách các số để thêm (chẳng hạn như p 1 2 3 4):

p=:#@#~

Ý tưởng rất đơn giản. Các chức năng được viết theo kiểu ngầm vô nghĩa aka. Đây là một định nghĩa nhọn:

p=:3 :'##~y'

Đọc từ phải sang trái. Trong phiên bản ngầm, @tổng hợp các phần của hàm. (giống như một trong toán học [(f∘g) (x) = f (g (x)])

  • ylà tham số của p.
  • ~làm cho một động từ phản xạ. Đối với một số động từ m, m~ abằng a m a.
  • #(copy, a#b): Mỗi phần tử trong ađược nhân rộng ilần, trong đó iphần tử có cùng chỉ mục với phần tử hiện tại acủa b. Do đó, #~sao chép một n nlần mục .
  • #(Count, #b): Đếm số lượng phần tử trong b.

Kết luận: J là tuyệt vời và ít đọc hơn Perl (điều đó làm cho nó thậm chí còn khủng khiếp hơn)

Chỉnh sửa

  • 15 -> 7 sử dụng #thay vì i.. Vâng! Ít ký tự hơn golfscript.

Thêm một chương trình

Đây là một truy vấn cho đầu vào, nhưng nó vẫn không phải là một chương trình đầy đủ: (13 ký tự, 3 bộ ngắt)

##~".1!:1<#a:

J chắc chắn là tuyệt vời, nhưng tin tôi đi, bạn không thể bỏ qua phần phân tích vấn đề khi bạn giải quyết các thách thức với nó ;-)
JB

@JB Chà, bạn có thể sử dụng hàm dựng sẵn toJ, nhưng tôi cứ bị lỗi tên miền.
FUZxxl

2

Javascript (17 ký tự ngắt)

eval('걢갽거걲걯걭거건갨걡갽거걲걯걭거건갨걹갽걦걵걮걣건걩걯걮갨걡갩걻걣갽걮걥걷갠걕걩걮건갸걁걲걲걡걹갨걡갩갻걦걯걲갨걩갠걩걮갠걣갩걩걦갨걩갽갽걾걾걩갩걸갮거걵걳걨갨갱갩걽갬걸갽걛걝갩갩갻걹갨걡갩갻걹갨걢갩갻걡걬걥걲건갨걸갮걬걥걮걧건걨갩갻'['split']('')['map'](function(_){return String['fromCharCode'](_['charCodeAt'](~~[])^0xac00)})['join'](''))

: P ("Obfuscated" để giảm số lượng ký tự ngắt kết nối. Bên trong, nó b=prompt(a=prompt(y=function(a){c=new Uint8Array(a);for(i in c)if(i==~~i)x.push(1)},x=[]));y(a);y(b);alert(x.length); .)


2

C #,

Chương trình hoạt động trên 1 dòng; ngăn cách trên nhiều dòng để tránh cuộn ngang.

using C=System.Console;
class A{
static void Main(){
int a,b,x,y;
a=int.Parse(C.ReadLine());
b=int.Parse(C.ReadLine());
do{x=a&b;y=a^b;a=x<<1;b=y;}while(x>0);
C.WriteLine(y);
}}

1

Clojure (44 ký tự)

(pr(#(count(concat(%)(%)))#(repeat(read)0)))

Chỉnh sửa: đã sửa để in trên STDOUT thay vì chỉ trả lại tổng.


+/- và các bộ ngắt kết nối được đề cập ở trên là thú vị, không phải là nhân vật.
người dùng không xác định

1

Scala

  • ghi bàn:
    • + -: 0
    • (). : 5 + 5 + 3 = 13

Mã số:

(List.fill (readInt) (1) ::: List.fill (readInt) (2)).size
  • List.fill (4) (7) tạo Danh sách (7, 7, 7, 7)
  • a ::: b ghép 2 Danh sách thành một
  • Phần còn lại nên rõ ràng

1

K, 11

{#,[!x;!y]}

Thủ thuật ghép tương tự như giải pháp R. Đọc từ phải sang trái: Liệt kê hai biến đầu vào, nối và sau đó đếm.


1

PowerShell , 27 42 byte, 0 +-, 4 1 thứ cấp

Cảm ơn mazzy vì đã cứu a +và 4 người thứ hai

$args|%{[int[]]$_*$_}|measure|select count

Hãy thử trực tuyến! hoặc Bảng đẹp cho thêm 3 byte

-Hoặc- thêm bốn phần phụ để lưu 19 byte:

32 23 byte, 1 0 +-, 12 5 giây

-9 byte nhờ mazzy

($args|%{,$_*$_}).count

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

Đối với mỗi đối số, chúng tôi đẩy ncác phần tử mảng (bao gồm [n]nhưng điều đó không quan trọng) đến đường ống được nhóm theo parens và sau đó được tính.



1
Tôi xin lỗi, đây KHÔNG phải là codegolf. 0 + -, 3 giây, 27 byte
mazzy

1
@mazzy Đó là 4 tính của tôi nhưng dù sao cũng cảm ơn: D
Veskah

1
bạn đúng rồi. cảm ơn. 0 + -, 1 Tie Breaker, 42 byte . bạn có thể thêm |flcho một định dạng đẹp Hãy thử trực tuyến!
mê mẩn

1

Keg (SBCS trên Keg wiki)

Về cơ bản là một cổng của câu trả lời R.

¿¿Ï_"Ï_!.

Giải trình

¿¿#        Take 2 integer inputs
  Ï_"Ï_#   Generate 2 arrays the length of the integer inputs
       !.# Output the length of the stack

1

05AB1E , 2 4 byte, 0 +/-

F>

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

Xin lỗi nếu tôi hiểu nhầm thử thách này, nhưng tôi đã ngạc nhiên khi không có câu trả lời 05AB1E. Câu trả lời ngắn nhất trong ngôn ngữ này tôi có thể đưa ra là không sử dụng + hoặc hàm tổng hợp.

Giải trình:

 F   #Loop A many times
  >  #Increment B
     #(Implicit output)

-2 byte nhờ Grimy.


1
Cảm ơn! Tôi vẫn chưa quen với 05AB1E.
Bismarck71


0

D

main(){
    int a,b;
    readf("%d %d",&a,&b);
    write((new int[a]~new int[b]).length);
}

lần này sử dụng độ dài mảng

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.