Menambahkan tanpa menggunakan tanda + atau -

24

Ada banyak tantangan "Lakukan __ tanpa _ _" sebelumnya, tapi saya harap ini adalah salah satu yang paling menantang.

Tantangan

Anda harus menulis sebuah program yang mengambil dua bilangan asli (bilangan bulat> 0) dari STDIN, dan mencetak jumlah dari dua angka itu ke STDOUT. Tantangannya adalah Anda harus menggunakan sesedikit mungkin +dan -menandainya sebagai tanda. Anda tidak diperbolehkan menggunakan fungsi jumlah atau negasi.

Contohnya

memasukkan

123
468

keluaran

591

memasukkan

702
720

keluaran

1422

Tie Breaker: Jika dua program memiliki jumlah +dan -karakter yang sama, pemenangnya adalah orang dengan jumlah lebih sedikit / * ( ) = . ,dan 0-9karakter.

Tidak Diizinkan: Bahasa di mana operator penambahan / pengurangan standar dan kenaikan / pengurangan adalah simbol selain +atau -tidak diizinkan. Ini berarti bahwa Whitespace bahasa tidak diperbolehkan.

PhiNotPi
sumber
1
Mungkin tantangan ini jauh lebih mudah daripada yang saya kira, terutama dalam bahasa lain, di mana ada fungsi jumlah (). Saya harus memperbaikinya.
PhiNotPi
50
Hadiah 100 rep untuk siapa saja yang dapat melakukan ini di Brainfuck.
Peter Olson
3
@ Peter Olson Yah, saya kira BF tidak turing lengkap tanpa salah satu +atau -...
FUZxxl
3
Hanya untuk memperjelas, tantangan ini tidak peduli tentang panjang kode, kan? Hanya jumlah +, -dan karakter tie breaker? ... atau apakah Anda perlu mengubah aturan lagi :-)
Tommy
@Tommy Tidak, tidak.
PhiNotPi

Jawaban:

29

Perl (no +/-, tanpa tie-breaker, 29 karakter)

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

Sebagai bonus, Anda dapat membuat jumlah kode lebih dari dua angka dengan menambahkan lebih banyak xke s!!xx!.

Atau, berikut adalah dua solusi 21-char dengan masing-masing 1 dan 3 tie-breaker

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

say log exp(<>)*exp<>

Catatan: Solusi ini menggunakan sayfungsi, tersedia sejak Perl 5.10.0 dengan -Esaklar baris perintah atau dengan use 5.010. Lihat riwayat edit jawaban ini untuk versi yang bekerja pada perl yang lebih lama.


Bagaimana solusi tanpa tie-breaker bekerja?

  • s!!xx!adalah operator pengganti regexp , yang beroperasi secara default pada $_variabel, yang menggantikan string kosong dengan string xx. (Biasanya /digunakan sebagai pembatas regexp di Perl, tetapi benar-benar hampir semua karakter dapat digunakan. Saya memilih !karena ini bukan tie-breaker.) Ini hanya cara mewah untuk membuat pronoming "xx"ke $_- atau, sejak $_mulai kosong (tidak terdefinisi, sebenarnya), itu benar-benar cara untuk menulis $_ = "xx"tanpa menggunakan tanda sama dengan (dan dengan satu karakter lebih sedikit, juga).

  • s!x!$"x<>!egadalah pengganti regexp lain, kali ini menggantikan masing-masing xdi $_dengan nilai ekspresi $" x <>. ( gSakelar menentukan penggantian global, emenetapkan bahwa penggantian harus dievaluasi sebagai kode Perl alih-alih digunakan sebagai string literal.) $"Adalah variabel khusus yang nilai default-nya adalah spasi tunggal; menggunakannya daripada " "menyimpan satu char. (Variabel lain apa pun yang diketahui memiliki nilai satu karakter, seperti $&atau $/, akan bekerja dengan baik di sini, kecuali bahwa menggunakan $/akan dikenakan biaya bagi saya sebagai pemutus hubungan.)

    The <> Operator baris masukan , dalam konteks skalar, membaca satu baris dari input standar dan kembali itu. Yang xsebelumnya adalah operator pengulangan string Perl , dan benar-benar inti dari solusi ini: ia mengembalikan operan kirinya (karakter spasi tunggal) mengulangi berapa kali yang diberikan oleh operan kanannya (baris yang baru saja kita baca sebagai input).

  • y!!!chanyalah cara yang tidak jelas untuk (ab) menggunakan operator transliterasi untuk menghitung karakter dalam string ( $_secara default, lagi). Saya bisa saja menulis say length, tetapi versi yang dikaburkan adalah satu karakter lebih pendek. :)

Ilmari Karonen
sumber
3
+1 - menakjubkan dan benar-benar tidak dapat dibaca ;-) Ini sepertinya jawaban yang sempurna karena jumlah karakter tidak masalah dalam tantangan ini.
Tommy
@Tommy, ada jawaban sempurna lainnya juga. Mungkin kita harus mendorong agar jumlah karakter menjadi tie-breaker terakhir.
Peter Taylor
@ Peter: Saya anggap sudah, secara default.
Ilmari Karonen
1
jika jumlah karakter adalah pemutus dasi terakhir, dan ada banyak entri terikat dengan nol di kategori lain, bukankah ini hanya menjadi code-golfdengan beberapa pembatasan sumber?
Sparr
47

R (24 karakter)

length(sequence(scan()))

Apa yang dilakukan:

  • scan membaca input dari STDIN (atau file)
  • sequencemenghasilkan urutan integer mulai dari 1 dan menyatukan urutan. Misalnya, sequence(c(2, 3))hasil dalam vektor1 2 1 2 3
  • length menghitung jumlah elemen dalam vektor gabungan

Contoh 1:

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

Contoh 2:

> length(sequence(scan()))
1: 702
2: 720
3:
Read 2 items
[1] 1422
Andrie
sumber
1
Sangat pintar, pekerjaan bagus.
Matius Baca
Ini mengejutkan saya
smci
+/- dan tie-breaker yang disebutkan di atas menarik, bukan karakter.
pengguna tidak diketahui
Bagaimana cara menghitung panjang? tanpa menggunakan tambahan apa pun? Jika demikian, saya akan terkejut.
Tem Pora
2
@TemPora Pertanyaan hanya membatasi kode dalam jawaban, bukan operasi yang dilakukan di belakang layar. Kami tidak akan membatasi pertanyaan sehingga arsitektur komputer yang mendasarinya tidak dapat menambah register.
mbomb007
15

D

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

sedikit memutar untuk menang

sebagai bonus, kode yang dikompilasi tidak mengandung operasi tambah (meskipun tidak dapat berbicara untuk panggilan readf)

ratchet freak
sumber
12

Python 2, 43 byte

print len('%s%s'%(input()*'?',input()*'!'))
Omar
sumber
3
Sangat inventif, tetapi Anda mungkin ingin mengubah karakter yang digunakan dalam string menjadi sesuatu selain tie-breaker seperti "~"
3Doubloons
Terima kasih atas saran Alex, saya sudah lupa tentang aturan tie-breaker.
Omar
print sum(input(),input())
razpeitia
9
razpeitia: Saya pikir jumlah adalah fungsi "jumlah" dan karenanya tidak diizinkan.
Omar
6

GolfScript

Tidak ada +/- atau tie-breaker:

# 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

Versi yang jauh lebih sederhana dengan dua karakter tie-breaker, menggunakan trik daftar-gabungan yang sama yang digunakan orang lain:

~[\]{,~}%,

Saya berasumsi bahwa GolfScript tidak didiskualifikasi karena memiliki )operator tambahan, karena saya sebenarnya tidak menggunakannya.

Peter Taylor
sumber
6

C (hanya 32bit)

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

Pointer aritmatika sama baiknya.
Bagaimana cocok dengan persyaratan?
* Tidak ada +atau -
* ada /, =, ., 0- 9
* Hanya 3 pasang kurung, yang menurut saya minimal (Anda perlu main, scanf, printf).
* Satu *(pendekatan pointer memerlukannya).
* Empat ,(bisa menyimpan satu dengan mendefinisikan variabel normal, bukan ac,av)

Uri Goren
sumber
6

C ++ 0 +/-, 3 tie-breaker

#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;
}
R. Martinho Fernandes
sumber
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

Ini tidak menggunakan +atau -karakter, dan hanya dua =dari set karakter pemutus dasi, salah satunya adalah wajib untuk mengikat main. Jumlahnya dilakukan dengan menggabungkan daftar panjang yang sesuai.

hammar
sumber
4

Sunting Ini telah diposting SEBELUM aturan diubah untuk melarang sum...

Bahasa R: Tidak ada panggilan ke +atau -... Dan 9 karakter tie-breaker!

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

Contoh:

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

The [1] 579adalah jawaban 579 (yang [1]adalah untuk melacak di mana dalam vektor hasil Anda karena dalam R semua nilai-nilai vektor - dalam hal ini panjang 1)

Perhatikan bahwa R memiliki +operator seperti kebanyakan bahasa - kebetulan bahwa R sumjuga memiliki jumlah vektor.

Dalam hal ini, readLinesmengembalikan vektor string dengan panjang 2. Saya kemudian memaksa untuk numerik (ganda) dan jumlahkan ...

Hanya untuk menunjukkan beberapa fitur 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
Tommy
sumber
1
+1 Untuk membuat saya harus mengubah aturan untuk melarang fungsi jumlah ().
PhiNotPi
@PhiNotPi - Mengubah aturan ?! Itu curang! :-) ... Tapi Anda mungkin harus mengatakan "sum-seperti fungsi" atau saya hanya akan menggunakan colSumsbukan ... Mungkin juga melarang "negasi-seperti fungsi" saat Anda di itu ...
Tommy
2
Saya akan menerima saran Anda. Dari apa yang bisa saya katakan, semua orang (termasuk saya) di situs ini suka menunjukkan celah dalam aturan.
PhiNotPi
4

Bahasa R.

Aturan baru, jawaban baru, bahasa yang sama. Tidak ada panggilan ke +atau-

PEMBARUAN Menggunakan scan, itu turun menjadi 11 karakter tie-breaker (dan 27 karakter di semua).

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

Asli: 13 karakter tie-breaker!

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

Contoh:

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

Kali ini hasilnya dicapai dengan perkalian matriks. Jawabannya ditampilkan sebagai matriks 1x1.

Tommy
sumber
Tidak ada yang bisa saya lakukan untuk melarang ini. Mungkin R hanya bagus dalam tantangan ini, karena sebagian besar berbasis matematika. Atau mungkin tantangan ini mudah.
PhiNotPi
+1 Bagus. Anda dapat membuat ini lebih singkat dengan scan()bukannyareadlines(n=2)
Andrie
@ Andrie - ya, tapi kemudian Anda bergantung pada pengguna yang memasukkan tepat dua angka ... Yang mana tidak masalah untuk tantangan ini, saya kira ...
Tommy
4

Haskell, 0 +/ -, 6 2 tie-breakers ( =)

(tidak menggunakan trik penggabungan string / daftar)

main = interact f
f x = show $ log $ product $ map exp $ map read $ lines x
JB
sumber
Anda dapat menghilangkan semua titik dengan mengorbankan tambahan = dengan mengganti komposisi: alih-alih "fgh" tulis "a di mana kapak = f $ g $ h x"
Omar
3

Javascript, 56

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

Terima kasih kepada @ JiminP pada tip ~~! Aku akan untuk byte, jadi penghematan 1 byte pada p = prompt; masih sepadan. Saya mengerti argumen Anda tentang tie-breaker chars, tetapi jujur ​​saja bukan Anda yang paling tidak byte :-p

Versi, 69

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

Berkat beberapa umpan balik dari @Ilmari dan @JiminP, saya telah mencukur 13 byte dari solusi asli saya.

Awalnya, 82

i=parseInt;p=prompt;a=Array(i(p()));a.push.apply(a, Array(i(p())));alert(a.length)
stephencarmody
sumber
Ruang setelah koma sama sekali tidak perlu; menghapusnya membuat Anda turun ke 81.
Ilmari Karonen
Menggunakan concatdan memasukkan perhitungan alertlebih pendek. i=parseInt;p=prompt;alert(Array(i(p())).concat(Array(i(p()))).length) BTW, saya tidak tahu bahwa Array(n)mengembalikan array dengan panjang n. Konsol Google Chrome memberi saya []dan saya pikir tidak ada ...
JiminP
1
Oh, karena yang penting adalah karakter tie-breaker, p=promptitu tidak baik. Dan, parseInt(x)hampir setara dengan ~~x. alert(Array(~~prompt())['concat'](Array(~~prompt()))['length'])(12 tie-breaker chars) PS. Saya bisa menggunakan ini sebagai entri saya, tetapi itu hanya memberi saya perasaan mencuri.
JiminP
3

C

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

APL (no +/-, tanpa pemutus dasi, 8 atau 10 karakter)

Entri ini mirip dengan yang lain yang merangkai urutan yang dihasilkan dari input dan menemukan panjangnya ... tapi itu di APL, yang dapat tampak membingungkan bahkan untuk masalah kecil seperti ini. Saya menggunakan Dyalog APL , yang menawarkan lisensi pendidikan gratis.

Kode:

⍴⊃⍪⌿⍳¨⎕⎕

Dari kanan ke kiri:

  • Setiap kuadrat-ku ( ) meminta input dari pengguna dan mengevaluasinya.
  • Setiap operator ( ¨) menerapkan fungsi generator indeks ( ) untuk setiap item dalam array di sebelah kanannya.
  • Ini meratakan array array yang dihasilkan menjadi satu array. Array input direduksi menjadi daftar datar oleh operator reduksi ( /), yang melipat array menggunakan fungsi gabungan ( ,). Demi tantangan ini, operator reduksi satu dimensi ( ) digunakan, bersama dengan operator gabungan sepanjang sumbu pertama ( ).
  • Sebagai hasil dari menggunakan operator reduksi, array tertutup , yang seperti menempatkannya di tas; semua yang kita lihat di luar adalah tas, bukan isinya. Operator pengungkap ( ) memberi kami konten dari array terlampir (kantong).
  • Akhirnya, bentuk-fungsi ( ) memberi kita panjang dimensi array. Dalam hal ini, kami memiliki array satu dimensi, jadi kami memperoleh jumlah item dalam array, yang merupakan hasil kami.

Jika kita perlu secara eksplisit menampilkan hasilnya, kita dapat melakukannya seperti ini:

⎕←⍴⊃⍪⌿⍳¨⎕⎕

Kode Python yang sebanding, dengan simbol APL yang sesuai di atas:

import operator

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

Saya ingin tahu apakah ada versi yang lebih pendek mungkin dalam APL - lain, versi sederhana saya datang dengan yang memiliki lebih pemutus dasi (meskipun masih di 8 karakter) adalah: ⍴(⍳⎕),⍳⎕.

Dillon Cower
sumber
Apakah generator indeks Anda mulai dari 1 atau 0?
MrZander
3

Saya tidak melihat ada yang melakukannya dengan cara Teknik Listrik, jadi inilah pendapat saya (dalam ruby):

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

Agak jelek, tapi itu menyelesaikan pekerjaan. Kedua nilai tersebut dibandingkan dengan bitwise AND. Jika mereka tidak memiliki bit yang sama, tidak ada "carry" ke kolom biner berikutnya, sehingga penambahan dapat diselesaikan dengan bitwise pada XORmereka. Jika ada carry, Anda harus menambahkan carry ke bitwise XOR. Inilah skrip ruby ​​kecil yang saya gunakan untuk memastikan logika digital saya tidak terlalu berkarat:

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

Tepuk tangan!

Nuh
sumber
3

Seed , 3904 3846 11 byte, 0 + / -, 10 pemutus dasi

4 141745954
Krzysztof Szewczyk
sumber
2

Shell, 52

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

Ini pada dasarnya jawaban yang sama yang saya berikan untuk masalah lain.

Joey Adams
sumber
Mirip: xargs -n1 jot | wc -lyang mengambil -pengurangan yang sama awktetapi saya tidak bisa melihat bagaimana cara menghindarinyaxargs
Ben Jackson
+/- dan tie-breaker yang disebutkan di atas menarik, bukan karakter.
pengguna tidak diketahui
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));}
Saeedn
sumber
Saya menghitung 20 pemutus dasi ... Apakah saya benar?
FUZxxl
2
22 pemutus dasi: 0 /*=., 7 (, 7 ), 7 ,, 1[0-9]
saeedn
2

C #

Ini bukan yang terpendek oleh peregangan apa pun:

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));
}
Matthew Steeples
sumber
Itu melelahkan, Matthew.
Cary Swoveland
2

J, 15 7 karakter, 1 tie breaker, program tidak lengkap

Ini adalah usaha J saya. Ini bukan program lengkap, karena saya belum menemukan cara menulisnya. Cukup letakkan baris itu dalam skrip untuk mendapatkan fungsi pyang dapat digunakan untuk menambahkan jumlah angka yang berubah-ubah. Ini adalah monad dan membutuhkan daftar angka untuk ditambahkan (seperti p 1 2 3 4):

p=:#@#~

Idenya sangat sederhana. Fungsi ini ditulis dalam gaya tacit alias pointless. Berikut adalah definisi yang runcing:

p=:3 :'##~y'

Baca dari kanan ke kiri. Dalam versi diam-diam, @buat bagian-bagian fungsi. (seperti ∘ dalam matematika [(f∘g) (x) = f (g (x)])

  • yadalah parameter dari p.
  • ~membuat kata kerja refleksif. Untuk beberapa kata kerja m, m~ asama dengan a m a.
  • #(Salin, a#b): Setiap elemen dalam adireplikasi ikali, di mana ielemen pada indeks yang sama dengan elemen saat ini adari b. Dengan demikian, #~mereplikasi waktu item n n.
  • #(hitung, #b): Menghitung jumlah elemen dalam b.

Kesimpulan: J adalah awsome dan kurang terbaca dari Perl (yang membuatnya lebih awsome)

Suntingan

  • 15 -> 7 menggunakan #sebagai gantinya i.. Ya! Lebih sedikit karakter daripada skrip golf.

Lebih banyak program

Yang ini meminta masukan, tetapi itu masih bukan program lengkap: (13 karakter, 3 pemutus)

##~".1!:1<#a:
FUZxxl
sumber
J benar-benar luar biasa, tapi percayalah, Anda tidak bisa mengabaikan bagian penguraian masalah ketika Anda memecahkan tantangan dengannya ;-)
JB
@ JP Nah, Anda bisa menggunakan fungsi builtin toJ, tapi saya terus mendapatkan kesalahan domain.
FUZxxl
2

Javascript (17 karakter pemutus)

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

: P ("Mengaburkan" untuk mengurangi jumlah karakter tie-breaker. Secara internal, itu 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); .)

JiminP
sumber
2

C #,

Program bekerja pada 1 baris; dipisahkan pada beberapa baris untuk menghindari pengguliran horizontal.

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);
}}
sirchristian
sumber
1

Clojure (44 karakter)

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

Sunting: diperbaiki untuk mencetak pada STDOUT bukan hanya mengembalikan jumlah.

Omar
sumber
+/- dan tie-breaker yang disebutkan di atas menarik, bukan karakter.
pengguna tidak diketahui
1

Scala

  • skor:
    • + -: 0
    • (). : 5 + 5 + 3 = 13

Kode:

(List.fill (readInt) (1) ::: List.fill (readInt) (2)).size
  • List.fill (4) (7) menghasilkan List (7, 7, 7, 7)
  • a ::: b menggabungkan 2 Daftar menjadi satu
  • Sisanya harus jelas
Pengguna tidak diketahui
sumber
1

K, 11

{#,[!x;!y]}

Trik penggabungan yang sama dengan solusi R. Membaca dari kanan ke kiri: Menghitung dua variabel input, menyatukan dan kemudian menghitung.

tmartin
sumber
1

PowerShell , 27 42 byte, 0 +-, 4 1 sekunder

Berkat mazzy karena telah menyimpan a +dan 4 sekunder

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

Cobalah online! atau Pretty Table untuk tambahan 3 byte

-Atau- menambahkan empat sekunder untuk menghemat 19 byte:

32 23 byte, 1 0 +-, 12 5 detik

-9 byte berkat mazzy

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

Cobalah online!

Untuk setiap argumen, kami mendorong nelemen array (terdiri dari [n]tapi itu tidak penting) ke pipa yang dikelompokkan oleh parens dan kemudian dihitung.

Veskah
sumber
1
Maaf, ini BUKAN codegolf. 0 + -, 3 detik, 27 byte
mazzy
1
@ Mazzy Itu menurut hitungan saya tapi terima kasih: D
Veskah
1
kamu benar. Terima kasih. 0 + -, 1 Tie Breaker, 42 byte . Anda dapat menambahkan |fluntuk format yang cantik. Cobalah secara online!
mazzy
1

Tong (SBCS on Keg wiki)

Pada dasarnya port jawaban R.

¿¿Ï_"Ï_!.

Penjelasan

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

05AB1E , 2 4 byte, 0 +/-

F>

Cobalah online!

Maaf jika saya salah memahami tantangan ini, tapi saya terkejut tidak ada jawaban 05AB1E. Jawaban terpendek dalam bahasa ini yang bisa saya gunakan yang tidak menggunakan + atau fungsi penjumlahan bawaan.

Penjelasan:

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

-2 Bytes terima kasih kepada Grimy.

Bismarck71
sumber
1
Terima kasih! Saya masih baru di 05AB1E.
Bismarck71
1

Python 3

Tanpa mengandalkan penjumlahan tersembunyi di fungsi lain.

h=input;x,y=int(h()),int(h())
while y:c=x&y;x^=y;y=c<<1
print(x)

Cobalah online!

Hunaphu
sumber
0

D

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

kali ini menggunakan panjang array

ratchet freak
sumber