আমি কি আমার অঙ্কের যোগফল দ্বিগুণ করে বিভাজ্য?


40

ইনপুট হিসাবে ধনাত্মক পূর্ণসংখ্যা দেওয়া , আপনার কাজটি হ'ল যদি তার সংখ্যাগুলির যোগফলের দ্বিগুণ দ্বারা বিভাজ্য হয় এবং অন্যথায় একটি মিথ্যা মান হয় ( OEIS A134516 ) তবে সত্যবাদী মান আউটপুট করা task অন্য কথায়:

(sum_of_digits)*2 | number
  • সত্য ও মিথ্যা মামলার সত্যতা / মিথ্যা মানগুলির পরিবর্তে আপনি সত্য / মিথ্যা মামলার জন্য কোনও সীমাবদ্ধ মান নির্দিষ্ট করতে পারেন এবং সেগুলি অন্য মানগুলির পরিপূরক হতে পারে। একটি সাধারণ উদাহরণের জন্য, আপনি 0মিথ্যা মামলার জন্য সত্য মামলা এবং অন্যান্য সমস্ত সংখ্যা ব্যবহার করতে পারেন (বা বিপরীতে, যদি আপনি পছন্দ করেন)।

  • স্ট্যান্ডার্ড ইনপুট এবং আউটপুট বিধি প্রযোজ্য। ডিফল্ট লুফোলগুলিও প্রযোজ্য।

  • আপনি কোনও পূর্ণসংখ্যা হিসাবে বা সেই পূর্ণসংখ্যার স্ট্রিং প্রতিনিধিত্ব হিসাবে ইনপুট নিতে পারেন।

  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়!

  • আমি পিপিসিজিতে নতুন, তাই আমি যদি সম্ভব হয় তবে আপনি একটি ব্যাখ্যা পোস্ট করুন।


পরীক্ষার মামলা

ইনপুট - আউটপুট - (কারণ)

80 - সত্য - (16 ভাগ 80)
100 - সত্য - (2 2 টি ভাগ করে 100)
60 - সত্য - (12 ভাগ 60 করে)
18 - সত্য - (18 ভাগ 18)
12 - সত্য - (6 ভাগ 12)

4 - মিথ্যা - (8 টি ভাগ করে না 4)
8 - মিথ্যা - (16 টি ভাগ করে না 8)
16 - মিথ্যা - (14 ভাগ করে না 16)
21 - মিথ্যা - (6 ভাগ 21 না)
78 - মিথ্যা - (30 ভাগ 78 না)
110 - জালিয়াতি - (4 টি 110 এর পক্ষে থাকে না)
111 - মিথ্যা - (6 টি 111 কে ভাগ করে না)
390 - মিথ্যা - (24 টি 390 ভাগ করে না)

ভাল চ্যালেঞ্জ, পিপিসিজিতে আপনাকে স্বাগতম!
স্কিদদেব

@ মাইউব ধন্যবাদ, এটি আমার দ্বিতীয় চ্যালেঞ্জ, তবে প্রথমটি বন্ধ হয়ে গেছে: পি

পূর্ণসংখ্যার তালিকা হিসাবে আমাদের কী অঙ্কগুলি নেওয়ার অনুমতি দেওয়া হচ্ছে?
হেনরি

4
@ হেনরি নো, এটি খুব তুচ্ছ হবে

1
প্রকৃতপক্ষে, "সত্য ও মিথ্যা মামলার সত্যবাদী / মিথ্যা মানগুলির পরিবর্তে, আপনি পরিবর্তে সত্যিকারের ক্ষেত্রে কোনও সীমাবদ্ধ মান এবং মিথ্যা বিষয়গুলির জন্য তাদের পরিপূরক উল্লেখ করতে পারেন a একটি সাধারণ উদাহরণ হিসাবে, আপনি ব্যবহার করতে পারেন সত্য মামলার জন্য 0 এবং মিথ্যা মামলার জন্য অন্যান্য সমস্ত সংখ্যা (অথবা বিপরীতে, যদি আপনি চান) "একে অপরের বিরোধিতা করে বলে মনে হচ্ছে (বিশেষত," সীমাবদ্ধ "এবং" বা বিপরীত ")।
গ্রেগ মার্টিন

উত্তর:


7

নিম , 3 বাইট

𝐬ᚫ𝕞

ব্যাখ্যা:

𝐬      Implicitly convert to int array and sum the digits
 ᚫ     Double
  𝕞   Is it a divisor of the input?

এটি অনলাইন চেষ্টা করুন!

বিস্তারিত সংস্করণ


উম্ম ... আপনার যদি ইনপুটটি সংখ্যার দ্বিগুণ যোগের একাধিক হয় তবে এটি পরীক্ষা করা উচিত।
এরিক আউটগল্ফার 13

নিবন্ধন করুন ইনপুটটি অঙ্কের যোগফলের দ্বিগুণ হয়ে থাকে কিনা তা আমি পরীক্ষা করে দেখি। সম্ভবত আমি এটি সঠিকভাবে ব্যাখ্যা না।
Okx

4
নিমকে আরও গল্ফায়ার পাওয়া দরকার - যখন সাবমিশনগুলি দীর্ঘ হয়, তখন আমার ব্রাউজারটি পিছিয়ে যেতে শুরু করে।
ফল ফলবান

1
@ চ্যালেঞ্জার 5 আমি গল্ফতার অভাবের জন্য আন্তরিকভাবে ক্ষমা চাইছি। আমি পরের বার আবার চেষ্টা করব। আবার, সে সম্পর্কে দুঃখিত।
Okx

@ ওকএক্স এবং আমি যে বিষয়ে কথা বলছিলাম তার একটি আরও ভাল প্রমাণ ছিল এমন একটি নিম উত্তর খুঁজে পেতে খুব অলস হওয়ার জন্য আমি আন্তরিকভাবে ক্ষমা চাইছি।
ESlanging ফল

16

জাভাস্ক্রিপ্ট (ES6), 31 29 27 বাইট

স্ট্রিং হিসাবে ইনপুট নেয়। সত্যের পক্ষে শূন্য এবং মিথ্যা বলার জন্য শূন্য নয়।

n=>n%eval([...n+n].join`+`)

মন্তব্য

n => n % eval([...n + n].join`+`)
n =>                                   // take input string n  -> e.g. "80"
                  n + n                // double the input     -> "8080"
              [...     ]               // split                -> ["8", "0", "8", "0"]
                        .join`+`       // join with '+'        -> "8+0+8+0"
         eval(                  )      // evaluate as JS       -> 16
     n %                               // compute n % result   -> 80 % 16 -> 0

পরীক্ষার মামলা


আমি আগে কখনও বিভক্ত হওয়ার [... x] পদ্ধতিটি দেখিনি, এর জন্য বিশেষত কোনও নাম আছে কি?
জ্যাকব পার্সি


7

সি #, 46 বাইট

using System.Linq;n=>n%(n+"").Sum(c=>c-48)*2<1

সম্পূর্ণ / ফর্ম্যাট সংস্করণ:

using System;
using System.Linq;

class P
{
    static void Main()
    {
        Func<int, bool> f = n => n % (n + "").Sum(c => c - 48) * 2 < 1;

        Console.WriteLine(f(80));
        Console.WriteLine(f(100));
        Console.WriteLine(f(60));

        Console.WriteLine();

        Console.WriteLine(f(16));
        Console.WriteLine(f(78));
        Console.WriteLine(f(390));

        Console.ReadLine();
    }
}

4

রেটিনা , 38 27 বাইট

-11 বাইটস এবং @ মার্টিনএেন্ডারকে কোড ধন্যবাদ দিয়ে একটি ত্রুটি স্থির করে

$
$_¶$_
.+$|.
$*
^(.+)¶\1+$

এটি অনলাইন চেষ্টা করুন!

বিভাজ্য হলে 1 টি প্রিন্ট করুন, অন্যথায় 0

ব্যাখ্যা (আশা করি আমি এই অধিকার পেয়েছি)

$
$_¶$_

পুরো ইনপুটটি যুক্ত করে একটি নতুন লাইন, আবার ইনপুট

.+$|.
$*

প্রতিটি ম্যাচকে অ্যানারিতে রূপান্তরিত করে (হয় পুরো দ্বিতীয় লাইনটি যা মূল ইনপুট, বা প্রথম লাইনের প্রতিটি অঙ্ক)

^(.+)¶\1+$

প্রথম লাইনটি (দ্বিগুণ অঙ্কের যোগফল) দ্বিতীয় লাইনের বিভাজক কিনা তা পরীক্ষা করে দেখুন


4

এমএটিএল , 7 বাইট

tV!UsE\

0বিভাজ্য হলে আউটপুট , অন্যথায় ধনাত্মক পূর্ণসংখ্যা। বিশেষত, এটি তার সংখ্যার যোগফলের দ্বিগুণ দ্বারা সংখ্যাটি ভাগ করার অবশিষ্টাংশকে বহন করে।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

t   % Implicit input. Duplicate
V!U % Convert to string, transpose, convert to number: gives column vector of digits
s   % Sum
E   % Times 2
\   % Modulus. Implicit display

4

05 এ বি 1 ই , 5 4 বাইট

-1 বাইট ধন্যবাদ Okx কে

SO·Ö

এটি অনলাইন চেষ্টা করুন!

আপনি সত্যের জন্য 0 এবং মিথ্যাচারের জন্য অন্য কিছু পেতে কেবল 3 বাইট ফলস্বরূপ অপসারণ করতে পারেন তবে আমার কাছে যা সঠিকভাবে সংজ্ঞা অনুসারে ফিট করে না বলে মনে হয়।

ব্যাখ্যা

SO·Ö
SO    # Separate the digits and sum them
  ·   # Multiply the result by two
   Ö  # Is the input divisible by the result?

আপনি প্রতিস্থাপন 4 বাইট তা গলফ পারেন %_সঙ্গে Ö
Okx

4

x86-64 মেশিন কোড, 24 বাইট

6A 0A 5E 31 C9 89 F8 99 F7 F6 01 D1 85 C0 75 F7 8D 04 09 99 F7 F7 92 C3

উপরের কোডটি 64-বিট x86 মেশিন কোডে একটি ফাংশন সংজ্ঞায়িত করে যা নির্ধারণ করে যে ইনপুট মানটি তার অঙ্কগুলির যোগফলের দ্বিগুণ দ্বারা বিভাজ্য কিনা। ফাংশনটি সিস্টেম ভি এএমডি 64 কলিং কনভেনশনের সাথে সঙ্গতিপূর্ণ, যাতে এটি কার্যত কোনও ভাষা থেকে কলযোগ্য, ঠিক যেন এটি কোনও সি ফাংশন।

EDIকলিং কনভেনশন অনুযায়ী এটি নিবন্ধের মাধ্যমে ইনপুট হিসাবে একক পরামিতি নেয় যা পরীক্ষার পূর্ণসংখ্যা। (এটি চ্যালেঞ্জের নিয়মের সাথে সামঞ্জস্যপূর্ণ, ইতিবাচক পূর্ণসংখ্যার হিসাবে ধরে নেওয়া হয় এবং CDQআমরা সঠিকভাবে কাজ করতে যে নির্দেশনা ব্যবহার করি তার জন্য এটি প্রয়োজনীয় is )

EAXকলিং কনভেনশন অনুসারে এটি পুনরায় নিবন্ধে তার ফল দেয় । যদি ইনপুট মান ফলাফলের 0 হতে হবে ছিল তার ডিজিটের যোগফল দ্বারা বিভাজ্য, এবং অন্যথায় নন-জিরো। (মূলত, একটি বিপরীত বুলিয়ান, ঠিক চ্যালেঞ্জের বিধিগুলিতে দেওয়া উদাহরণের মতো))

এর সি প্রোটোটাইপটি হ'ল:

int DivisibleByDoubleSumOfDigits(int value);

প্রতিটি নির্দেশের উদ্দেশ্য সম্পর্কে একটি সংক্ষিপ্ত বিবরণ দিয়ে বর্ণিত অসমাপ্ত সমাবেশ ভাষার নির্দেশাবলী এখানে রয়েছে:

; EDI == input value
DivisibleByDoubleSumOfDigits:
   push 10
   pop  rsi             ; ESI <= 10
   xor  ecx, ecx        ; ECX <= 0
   mov  eax, edi        ; EAX <= EDI (make copy of input)

SumDigits:
   cdq                  ; EDX <= 0
   div  esi             ; EDX:EAX / 10
   add  ecx, edx        ; ECX += remainder (EDX)
   test eax, eax
   jnz  SumDigits       ; loop while EAX != 0

   lea  eax, [rcx+rcx]  ; EAX <= (ECX * 2)
   cdq                  ; EDX <= 0
   div  edi             ; EDX:EAX / input
   xchg edx, eax        ; put remainder (EDX) in EAX
   ret                  ; return, with result in EAX

প্রথম ব্লকে, আমরা রেজিস্টারগুলির কিছু প্রাথমিক সূচনা করি:

  • PUSH+ + POPনির্দেশাবলী আরম্ভ করার জন্য একটি ধীর কিন্তু সংক্ষিপ্ত উপায় হিসেবে ব্যবহার করা হয় ESI10. এই প্রয়োজনীয় কারণ DIVএক্স 86 উপর নির্দেশ একটি রেজিস্টার প্রতীক প্রয়োজন। (এমন কোনও রূপ নেই যা 10 এর তাত্ক্ষণিক মান দ্বারা বিভক্ত হয়)
  • XORECXনিবন্ধকে সাফ করার জন্য একটি ছোট এবং দ্রুত উপায় হিসাবে ব্যবহৃত হয় । এই রেজিস্টারটি আসন্ন লুপের ভিতরে "সঞ্চয়কারী" হিসাবে পরিবেশন করবে।
  • অবশেষে, ইনপুট মানটির (থেকে EDI) একটি অনুলিপি তৈরি করা হয় এবং এতে সংরক্ষণ করা হয় EAX, যা আমরা লুপের মধ্য দিয়ে যেতে যেতে আঁটসাঁট হয়ে যাবে।

তারপরে, আমরা লুপিং এবং ইনপুট মানটিতে অঙ্কগুলি সংমিশ্রণ শুরু করি। এটি x86 DIVনির্দেশের উপর ভিত্তি করে তৈরি করা হয়েছে , যা EDX:EAXএর অপারেন্ড দ্বারা ভাগ হয়ে যায় EAXএবং ভাগফলটি এবং বাকী বাক্যটি প্রদান করে EDX। আমরা এখানে যা করব ইনপুট মানটি 10 ​​দ্বারা বিভক্ত করা হবে যেমন বাকীটি শেষ স্থানে থাকা অঙ্ক (যা আমরা আমাদের সংযোজক রেজিস্টারে যুক্ত করব ECX), এবং ভাগফল বাকী অঙ্কগুলি।

  • CDQনির্দেশ সেটিং একটি সংক্ষিপ্ত উপায় EDX0. এটা আসলে করার সাইন-প্রসারিত মান EAXথেকে EDX:EAX, যা কি DIVলভ্যাংশ হিসাবে ব্যবহার করে। আমাদের এখানে আসলে সাইন-এক্সটেনশনের দরকার নেই, কারণ ইনপুট মানটি স্বাক্ষরযুক্ত নয়, তবে ক্লিয়ার CDQকরতে ব্যবহারের বিপরীতে 1 বাইট , যা 2 বাইট হবে।XOREDX
  • তারপর আমরা DIVIDE EDX:EAXদ্বারা ESI(10)।
  • বাকী ( EDX) সংযোজকটিতে যোগ করা হয় ( ECX)।
  • EAXরেজিস্টার (ভাগফল) যদি এটা 0. সমান তাই, আমরা এটা ডিজিটের সব মাধ্যমে করা হয়েছে এবং আমরা মাধ্যমে পড়া কিনা তা দেখতে পরীক্ষা করা হয়। যদি তা না হয় তবে আমাদের যোগফলের আরও বেশি সংখ্যা রয়েছে তাই আমরা লুপের শীর্ষে ফিরে যাই।

লুপ শেষ হওয়ার পরে, আমরা বাস্তবায়ন করি number % ((sum_of_digits)*2):

  • LEAনির্দেশ অল্প উপায় হিসেবে ব্যবহার করা হয় সংখ্যাবৃদ্ধি ECX2 দ্বারা (অথবা এবং, equivalently, যোগ ECX(এই ক্ষেত্রে নিজেই), এবং ফলাফলের সংরক্ষণ একটি ভিন্ন রেজিস্টারে EAX)।

    (আমরা এটিও করতে পারতাম add ecx, ecx+ xchg ecx, eax; উভয়ই 3 বাইট, তবে LEAনির্দেশটি দ্রুত এবং আরও সাধারণ)

  • তারপরে, আমরা CDQবিভাগের জন্য প্রস্তুত করতে আবার চেষ্টা করি । কারণ EAXইতিবাচক হবে (অর্থাত্ স্বাক্ষরযুক্ত), এটি EDXআগের মতো শূন্যেরও প্রভাব ফেলে ।
  • পরবর্তী বিভাগটি, EDX:EAXএবার ইনপুট মান দ্বারা বিভাজন (একটি নিরবচ্ছিন্ন অনুলিপি যার মধ্যে এখনও রয়েছে EDI)। এটি মডুলোর সমতুল্য, বাকী বাকী অংশের সাথে EDX। (ভাগফলটিও isোকানো হয়েছে EAX, তবে আমাদের এটির দরকার নেই))
  • পরিশেষে, আমরা XCHG(EXCHANGE) বিষয়বস্তু EAXএবং EDX। সাধারণত, আপনি MOVএখানে কিছু করতে পারেন তবে XCHGএটি কেবলমাত্র 1 বাইট (ধীর হলেও)। কারণ EDXবিভাগের পরের বাকী অংশগুলি রয়েছে, যদি মানটি সমানভাবে বিভাজ্য বা অন্যথায় শূন্য হয় না তবে এটি 0 হবে। এইভাবে, যখন আমরা RETপোড়া, EAX(ফলাফল) 0 হয় যদি ইনপুট মানটি তার অঙ্কগুলির যোগফলের দ্বিগুণ দ্বারা বিভাজ্য হয়, বা অন্যথায় শূন্য নয়।

আশা করি এটি একটি ব্যাখ্যা যথেষ্ট।
এটি স্বল্পতম এন্ট্রি নয়, তবে ওহে, দেখে মনে হচ্ছে এটি অ-গল্ফিংয়ের প্রায় সব ভাষাই মারছে! :-)


3

জাপট , 7 4 বাইট

স্ট্রিং হিসাবে ইনপুট নেয়। আউটপুট 0জন্য trueবা থেকে বড় 0জন্য false, যা, অন্যান্য সমাধানের থেকে বৈধ বলে মনে হচ্ছে হবে। যদি না হয়, আমাকে জানান এবং আমি রোলব্যাক করব।

%²¬x

এটা পরীক্ষা করো


ব্যাখ্যা

স্ট্রিং এর অন্তর্নিহিত ইনপুট U
"390"

²

Uদু'বার পুনরাবৃত্তি করুন ।
"390390"

¬

পৃথক অক্ষরের অ্যারেতে বিভক্ত করুন।
["3","9","0","3","9","0"]

x

প্রক্রিয়াটিতে প্রতিটি অক্ষরকে স্বয়ংক্রিয়ভাবে পূর্ণসংখ্যায় কাস্ট করে সংক্ষেপণের মাধ্যমে হ্রাস করুন।
24

%

প্রক্রিয়াটিতে Uস্বয়ংক্রিয়ভাবে Uকোনও পূর্ণসংখ্যায় কাস্ট করাও ফলাফল দ্বারা বিভাজনের বাকী অংশ পান । সুস্পষ্টভাবে ফলাফল পূর্ণসংখ্যা আউটপুট।
6 (=false)


2
আপনার ব্যাখ্যাগুলি সাধারণত প্রচুর পরিমাণে উল্লম্ব স্থান ব্যবহার করে, যা আমার মনে হয় এটির প্রয়োজন নেই। যেভাবেই হোক না কেন, এটি আপনার উত্তর।
Okx

@Okx; কয়েকদিন আগে আমি যখন এই ফর্ম্যাটে স্যুইচ করেছিলাম তখন কীভাবে "স্বাভাবিক" হতে পারে তা আমি জানি না।
শেগি

4
আমি ব্যাখ্যা ফর্ম্যাটটি পছন্দ করেছি। অনুসরণ করা সহজ ছিল, বিশেষত এই সমস্যার জন্য, কারণ এটি একটি লিনিয়ার হ্রাস ছিল এবং পৃষ্ঠাটি গণিতের সমস্যার মতো সরিয়ে নিয়েছিল। শুধু আমার দুই সেন্ট।
হেনরি 14

3
এই ব্যাখ্যার বিন্যাসটি স্বাভাবিক বিন্যাসের চেয়ে অনেক ভাল, বিশেষত যারা ভাষাগুলির সাথে পরিচিত নন। আমি চাই যে অন্যান্য গল্ফাররাও এই গল্ফিং ভাষা ব্যবহার করে do
পিটার1807

3

সি 89, 55 53 বাইট

(স্টেডিবক্সকে ধন্যবাদ!

s,t;f(x){for(t=x,s=0;t;t/=10)s+=t%10;return x%(s*2);}

এটি একটি একক ইনপুট নেয় x, যা পরীক্ষার মান। এটি যদি xতার অঙ্কগুলির যোগফলের দ্বিগুণ দ্বারা সমানভাবে বিভাজ্য হয় বা অন্যথায় শূন্য নয়, তবে এটি 0 প্রদান করে।

এটি অনলাইন চেষ্টা করুন!

Ungolfed:

/* int */ s, t;
/*int */ f(/* int */ x)
{
    for (t = x, s = 0; t /* != 0 */; t /= 10)
        s += (t % 10);
    return x % (s * 2);
}

আপনি দেখতে পাচ্ছেন, এটি সি 89 এর অন্তর্নিহিত-ইন-বিধিবিধানের সুবিধা নেয়। গ্লোবাল ভেরিয়েবলগুলি sএবং tস্পষ্টতই intএস হিসাবে ঘোষণা করা হয় । (এগুলিকেও 0 এ স্পষ্টভাবে আরম্ভ করা হয়েছে কারণ তারা গ্লোবাল, তবে আমরা যদি ফাংশনটি একাধিকবার কল করতে চাই তবে আমরা এর সুবিধা নিতে পারি না))

একইভাবে, ফাংশনটি, fএকটি একক প্যারামিটার নেয়, x,যা স্পষ্টতই একটি intএবং এটি একটি প্রদান করে int

ফাংশনের অভ্যন্তরের কোডটি মোটামুটি সোজা, যদিও forআপনি সিনট্যাক্সের সাথে অপরিচিত থাকলে লুপটি ভীষণ অদ্ভুত দেখাবে। মূলত, forসি এর একটি লুপ শিরোনামে তিনটি অংশ থাকে:

for (initialization; loop condition; increment)

"ইনিশিয়ালাইজেশন" বিভাগে, আমরা আমাদের বিশ্বব্যাপী ভেরিয়েবলগুলি সূচনা করেছি। লুপটি প্রবেশের আগে এটি একবার চলবে।

"লুপ শর্ত" বিভাগে, লুপটি কী অবস্থায় চলতে হবে সে সম্পর্কে আমরা নির্দিষ্ট করেছি। এটি অনেকটা সুস্পষ্ট হওয়া উচিত।

"ইনক্রিমেন্ট" বিভাগে, আমরা মূলত স্বেচ্ছাচারিত কোড রেখেছি, যেহেতু এটি প্রতিটি লুপের শেষে চলবে।

লুপের বৃহত্তর উদ্দেশ্য হ'ল ইনপুট মানটিতে প্রতিটি অঙ্কের মাধ্যমে পুনরাবৃত্তি করা, তাদের যুক্ত করা s। অবশেষে লুপটি শেষ হওয়ার পরে sদ্বিগুণ হয়ে মডুলো নেওয়া xহয় এটি দেখতে সমানভাবে বিভাজ্য কিনা। (এখানে যুক্তির আরও ভাল, বিস্তারিত ব্যাখ্যা আমার অন্যান্য উত্তরে পাওয়া যাবে , যার ভিত্তিতে এটি একটি ভিত্তিক।)

মানব-পঠনযোগ্য সংস্করণ:

int f(int x)
{
    int temp = x;
    int sum  = 0;
    while (temp > 0)
    {
        sum  += temp % 10;
        temp /= 10;
    }
    return x % (sum * 2);
}

আপনি দুটি লাইট সংরক্ষণ করতে পারেন, যদি আপনি লুপ শর্ত হিসাবে tপরিবর্তেt>0 ব্যবহার করেন ।
স্টিডিবক্স

আহ, অবশ্যই! ভাল ক্যাচ, @ স্টেডিবক্স আমি কীভাবে এটি মিস করেছি তা নিশ্চিত নয়, যেহেতু 0 টির বিরুদ্ধে পরীক্ষা করা আমার আসাম বাস্তবায়নটি হুবহু যা ঘটেছিল, যার ভিত্তিতে এই উত্তরটি ভারী ভিত্তিক ছিল।
কোডি গ্রে



2

পাইথন 2 , 34 32 বাইট

-২ বাইট @ রডকে ধন্যবাদ

lambda n:n%sum(map(int,`n`)*2)<1

এটি অনলাইন চেষ্টা করুন!


6
প্রশ্নে প্রদত্ত "স্পষ্টত পৃথকযোগ্য" উদাহরণের ভিত্তিতে, আমি বিশ্বাস করি আপনি এটি মুছে ফেলতে পারেন <1
গম উইজার্ড


2

পিএইচপি , 41 বাইট

বিভাজ্য হলে শূন্য প্রিন্ট করে, অন্যথায় ধনাত্মক পূর্ণসংখ্যা।

<?=$argn%(2*array_sum(str_split($argn)));

এটি অনলাইন চেষ্টা করুন!


আপনি হেডার ব্লকে অ্যাসাইনমেন্টটি রেখেছেন। আপনি ভাল হিসাবে ব্যবহার হতে পারে $a=10, কিন্তু আপনি যে গণনা আপনার বাইট গণনা প্রতি ভুলে গেছি
aross

@ অ্যারোস কেন আমাকে আমার বাইট গণনাতে ইনপুট গণনা করা উচিত? $argnসাথে উপলব্ধ -F(এই ক্ষেত্রে) অথবা -Rবিকল্প
Jörg Hülsermann

এইচএম, আকর্ষণীয়। আমি সম্পর্কে জানতাম না -F। তবে এটি আপনার টিআইওতে প্রতিফলিত হয় না (এটি কি এসটিডিএন থেকে প্রতিধ্বনিত সমর্থন করে?)।
বৃহস্পতিবার 5'17

@aross এটি আপনার পদ্ধতির মতো কাজ করে যা কোডের পরিবর্তে কেবলমাত্র একটি ফাইল এবং php.net/manual/en/features.com ম্যান্ডলাইন.ওপশন.পিপি এর-F পরিবর্তে বিকল্প ব্যবহার করে আপনি যদি -R কমেন্টের মতো টিও তেও এর চেয়ে আরও ভাল উপায় খুঁজে পান তবে লাইনটি আমাকে
জানিয়ে

2

এক্সেল, 63 বাইট

=MOD(A1,2*SUMPRODUCT(--MID(A1,ROW(OFFSET(A$1,,,LEN(A1))),1)))=0

সামিংয়ের অঙ্কগুলি হ'ল দীর্ঘতর বিট।



2

ঝাঁকুনি , 9 8 বাইট

লিওকে 1 বাইট সংরক্ষণ করার জন্য ধন্যবাদ

Ṡ¦ȯ*2ṁis

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

Ṡ¦ȯ         Test whether f(x) divides x, where f is the function obtained by
            composing the next 4 functions.
       s    Convert x to a string.
     ṁi     Convert each character to an integer and sum the result.
   *2       Double the result.

আপনি মানচিত্র করতে এবং একটি একক কমান্ডের সাথে যোগ করতে একটি বাইট সংরক্ষণ করতে পারেন
লিও

2

হাস্কেল , 38 37 42 বাইট

জগারবকে 1 বাইট বন্ধ করে গল্ফ করার জন্য ধন্যবাদ

f x=read x`mod`foldr((+).(*2).read.pure)0x

এটি অনলাইন চেষ্টা করুন!

স্ট্রিং হিসাবে ইনপুট নেয়; বিভাজ্য এবং অন্যথায় ননজারো হলে 0 প্রদান করে।


(:[])হতে পারে pure
Zgarb

ফাংশন ঘোষণার দ্বারা
ল্যাম্বদা

@ বার্তাওয়েল: খুব নিশ্চিত যে এটি একটি ধোয়া। উদাহরণ?
জুলিয়ান ওল্ফ

আপনি ঠিক বলেছেন, এটি ঠিক একই দৈর্ঘ্য। কীভাবে এটি আমার মনকে অতিক্রম করেছে তা নিশ্চিত নয়: /
বার্তাভেল

2

পাইথন 3, 35 বাইট

lambda a:a%(sum(map(int,str(a)))*2)

হ্যালো এবং সাইটে আপনাকে স্বাগতম। আপনি এখানে কিছু সাদা জায়গা সরাতে পারেন। বিশেষ করে প্রায় =পরে )মধ্যে int(c)। উপরন্তু যেহেতু sumএকটি আর্গুমেন্ট আপনি অপসারণ করতে পারেন হিসাবে একটি জেনারেটর নিতে পারেন [..]এটা ভিতরে। আপনার যদি কোনও অতিরিক্ত প্রশ্ন থাকে তবে নির্দ্বিধায় আমাকে পিং করুন।
গম উইজার্ড

int(c)for c in amap(int,a)কয়েক বাইট বাঁচাতেও হতে পারে ।
গম উইজার্ড

এটি কাজ করে না - বা বরং পিছনের দিকে কাজ করে। 4 টি অতিরিক্ত বাইট সহ সহজেই ঠিক করা হয়েছে:lambda a:not a%(sum(map(int,str(a)))*2)
ওসুকা_

@osuka_ প্রশ্নের বিবরণে বুলেট পয়েন্ট এক দেখুন
16'8 এ 16

2

টিআই-বেসিক, 27 26 21 বাইট

-5 @ ওকে ধন্যবাদ

:fPart(Ans/sum(2int(10fPart(Ans10^(~randIntNoRep(1,1+int(log(Ans

এটি টিআই-বেসিকের পূর্ণসংখ্যার সংখ্যার সংক্ষিপ্ততর উপায় নেই বলে এই কৌশলটি আরও জটিল করে তুলেছে । এর 0জন্য প্রদান করে Trueএবং এর জন্য একটি আলাদা সংখ্যা False

ব্যাখ্যা:

:fPart(Ans/sum(2int(10fPart(Ans10^(-randIntNoRep(1,1+int(log(Ans
                               10^(-randIntNoRep(1,1+int(log(Ans #Create a list of negative powers of ten, based off the length of the input, i.e. {1,0.1,0.01}
                            Ans                                  #Scalar multiply the input into the list
                    10fPart(                                     #Remove everything left of the decimal point and multiply by 10
               2int(                                             #Remove everything right of the decimal point and multiply by 2
           sum(                                                  #Sum the resulting list
       Ans/                                                      #Divide the input by the sum
:fPart(                                                          #Remove everything left of the decimal, implicit print

2
10^-randIntNoRep(1,1+int(log(Ansseq(10^(~A-1),A,0,log(Ansঅর্ডার আপত্তিজনকভাবে কম বাইটের মতো একই কাজ করে (ভার্সন 2.55MP অনুমান করে)
ওকি

1

ব্রেনল্ফ , 13 12 বাইট

VR.Mvd&+2*c%

এটি অনলাইন চেষ্টা করুন!

সত্যের জন্য 0 আউটপুট, মিথ্যা জন্য অন্য কোনও সংখ্যা।

ব্যাখ্যা

VR.Mvd&+2*c%  Implicit input from command-line args
VR            Create stack2, return to stack1
  .M          Duplicate input to stack2
    vd        Switch to stack2, split into digits
      &+      Sum up all digits
        2*    Double
          c   Collapse stack2 back into stack1
           %  Modulus
              Implicit output of last item on stack

1

জাপট , 7 বাইট

vUì x*2

রিটার্নস 1জন্য true, 0জন্যfalse

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

vUì x*2
v        // Return 1 if the input is divisible by:
 Uì      //   Input split into a base-10 array
    x    //   Sum the array
     *2  //   While mapped by *2

আমি এর জন্য আরও কয়েকটি 7 বাইট সমাধান নিয়ে এসেছি (যদিও, আমি মনে করি না যে এটি তাদের মধ্যে একটি ছিল) - তবে আমি নিশ্চিত যে এর একটি সংক্ষিপ্ত সমাধান রয়েছে।
শেগি

1

হাস্কেল , 49 বাইট

f x=(==) 0.mod x.(*)2.sum.map(read.return).show$x

ব্যবহার

f 80

এটি অনলাইন চেষ্টা করুন!


3
টিপস: অতিরিক্ত স্থান রয়েছে, রিটার্ন == খাঁটি, তালিকা বোঝাপড়া প্রায়শই খুব কমপ্যাক্ট হয়: অনলাইনে চেষ্টা করে দেখুন!
বার্তাভেল

1

জাভা , 66 বাইট

-1 বাইট অলিভিয়ারকে ধন্যবাদ

a->{int i=0;for(int b:(""+a).getBytes())i+=b-48;return a%(i*2)<1;}

অবহেলিত ও ব্যাখ্যা:

a -> {
    int i = 0;

    for(int b : (""+a).getBytes()) { // Loop through each byte of the input converted to a string
        i += b-48; // Subtract 48 from the byte and add it to i
    }

    return a % (i*2) < 1 // Check if a % (i*2) is equal to one
    // I use <1 here for golfing, as the result of a modulus operation should never be less than 0
}

ব্যবহার করুন intপরিবর্তে byteসংরক্ষণ করতে ... একটি বাইট।
অলিভিয়ার গ্রাগোয়ার

@ অলিভিয়ারগ্রোওয়ের ধন্যবাদ তা খেয়াল করেনি।
Okx

@ ওএক্সএক্সকেও গল্ফড কোড পরিবর্তন করতে হবে।
হেনরি

আপনার (গল্ফড) কোডটি ১১০, ১১১ এর জন্য ভুল মান দেয় ably সম্ভবত মডিউল এবং গুণকের একই ক্রম রয়েছে বলে এটি a%i*2পার্স করা (a%i)*2হয়েছে।
অলিভিয়ের গ্রাগোয়ার

@ অলিভিয়েরগ্রোওরে আহ, যে সফল হয়।
Okx

1

জে, 15 বাইট

0 সত্যতা নির্দেশ করে, ননজারো মিথ্যাচারকে নির্দেশ করে।

|~[:+/2#"."0@":

ব্যাখ্যা

        "."0@":  convert to list of digits
  [:+/2#         sum 2 copies of the list ([: forces monadic phrase)
|~               residue of sum divided by argument?

পেরেন বা একাধিক @বা এড়াতে খুব চতুর উপায় [:!
জোনাহ

1
আমি এটিকে আমার নিজের উত্তর হিসাবে পোস্ট করা নিয়ে বিতর্ক করেছি, তবে এটি সত্যই যথেষ্ট আলাদা নয়। |~2*1#.,.&.":13 বাইট জন্য।
কোল

আমি আমার জে Qt আইডিইতে এর জন্য একটি 'ডোমেন ত্রুটি' পেয়েছি। (| ~ [: + / 2 # "।" 0 @ ": 112) তারপরে কোলের কোডের জন্য আমি পেয়েছি (| ~ 2 * 1 #।,। &।": 112) = 0। : / সম্ভবত আমার শেষের দিকে কিছু ভুল।
ড্রকোয়ারিয়াস



1

হাস্কেল , 35 34 বাইট

f x=mod x$2*sum[read[c]|c<-show x]

এটি অনলাইন চেষ্টা করুন!

সত্য ক্ষেত্রে '0' প্রদান করে, বাকী অন্যথায়।

হাস্কেল , নিমির পয়েন্টফ্রি সংস্করণ, 34 বাইট

mod<*>(2*).sum.map(read.pure).show

এটি অনলাইন চেষ্টা করুন!


আপনি পয়েন্টফ্রি যান তবে একই বাইট গণনা:mod<*>(2*).sum.map(read.pure).show
নিমি

দেখতে বেশ ভাল লাগছে, আমি এটি আমার জমাতে যুক্ত করেছি।
বার্তাভেল

1

পিএইচপি, 44 বাইট

for(;~$d=$argn[$i++];)$t+=2*$d;echo$argn%$t;

এভাবে চালান:

echo 80 | php -nR 'for(;~$d=$argn[$i++];)$t+=2*$d;echo$argn%$t;'

ব্যাখ্যা

অঙ্কটি অঙ্কের জন্য মোট গণনা করা যায়, তারপরে বেশিরভাগ উত্তরের মতো মডুলোর আউটপুট করে।


1

জাভা (ওপেনজেডিকে 8) , 55 53 বাইট

a->{int i=0,x=a;for(;x>0;x/=10)i+=x%10*2;return a%i;}

এটি অনলাইন চেষ্টা করুন!

0সত্যবাদী অর্থের প্রত্যাবর্তনের মান , অন্য যে কোনও কিছুই মিথ্যা বলে।

যেহেতু Okx এর উত্তরে আমার মন্তব্যটি কোনও রিপল দেয়নি, তাই আমি এটিকে মুছে ফেলেছিলাম এবং এটিকে উত্তর হিসাবে পোস্ট করেছি, আরও কিছুটা গল্ফ করেছে।

@ ক্রিজিসটফচিকোকি এবং @ লাইকোনি যারা আরও সঠিকভাবে আমাকে দেখিয়েছিলেন তাদের জন্য আরও গলফিং ধন্যবাদ আমাকে ফলাফলটির বিবরণ না দেওয়া পর্যন্ত সত্যবাদী / মিথ্যা মানের উত্তর দেওয়ার দরকার নেই, তবে কোনও মানই নেই।


আপনি শেষে <1 অংশটি সরিয়ে ফেলতে পারবেন, ফলে ফলাফলটি 0 টি সত্য এবং> 0 টি মিথ্যা, যা অ্যাকসেসটবেবল, এটি অতিরিক্ত -2 বাইটের ফলস্বরূপ হবে, সুতরাং আপনি জবাব দিয়েছেন 53 বাইটের মতো।
ক্রিজিসটফ সিচোকি

@ ক্রিজিসটফ সিচোকি না আমি পারছি না: এটি জাভা। একমাত্র সত্যবাদী মান true
অলিভিয়ার গ্রাগোয়ার

@ OlivierGrégoire এই সত্য যদি অন্য কিছুই উল্লেখ করা হয়, তখন এই প্রতিদ্বন্দ্বিতা বিশেষভাবে যুক্তরাষ্ট্রের Instead of truthy / falsy values for the true and false cases, you may instead specify any finite set of values for the true/false case, and their complement the other values.
লাইকনি

@ ক্রিজিসটফচিকোকি এবং লাইকনি দুঃখিত দুঃখিত আমি এই অংশটি ভুলভাবে লিখেছি, আমি এটি ঠিক করেছি! আপনাকে উভয়কেই ধন্যবাদ :) এছাড়াও, সম্পাদনাটি প্রত্যাখ্যান করার জন্য দুঃখিত যা এই ক্ষেত্রে আসলে উপযুক্ত ছিল।
অলিভিয়ার গ্রাগোয়ার

1

মিনি-ফ্লাক, 296 292 বাইট

({}((()[()]))){(({}[((((()()()){}){}){}){}])({}(((({})){}){}{}){})[({})])(({}({})))({}(({}[{}]))[{}])({}[({})](({}{})(({}({})))({}(({}[{}]))[{}])({}[({})]))[{}])(({}({})))({}(({}[{}]))[{}])({}[({})])}{}({}(((({}){})))[{}]){({}((({}[()]))([{(({})[{}])()}{}]()){{}{}(({}))(()[()])}{})[{}][()])}

এটি অনলাইন চেষ্টা করুন!

টিআইও লিঙ্কটিতে আমার কাছ থেকে আরও মন্তব্য রয়েছে, তাই এটি পড়া আংশিক সহজ।

সত্যবাদী / মিথ্যা: দ্বিতীয় সংখ্যাটি তৃতীয় সংখ্যার সমান হলে মিথ্যা, অন্যথায় মিথ্যা। সুতরাং সত্যবাদী এবং মিথ্যা সেট উভয়ই অসীম, তবে আমি মনে করি এটির অনুমতি দেওয়া উচিত। এটি না হলে +10 বাইট।

দ্রষ্টব্য: নেতৃস্থানীয় / পিছনের নতুন লাইনের / সাদা স্থানগুলিকে ইনপুটটিতে অনুমোদিত নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.