আমার গোল, সাহায্য আমাকে


23

একটি ইনপুট দেওয়া n, আপনার প্রোগ্রাম বা ফাংশন আবশ্যক আউটপুট ক্ষুদ্রতম ধনাত্মক পূর্ণসংখ্যা kযেমন যে nহিসাবে নিকটতম গুণিতকে বৃত্তাকার kচেয়ে বেশী n

উদাহরণ।

একটি ইনপুট দেওয়া হয়েছে 20, আউটপুট মানটি হওয়া উচিত 3:

  • নিকটতম একাধিক 1হয় 20, যা না তার চেয়ে অনেক বেশী 20

  • নিকটতম একাধিক 2হয় 20, যা না তার চেয়ে অনেক বেশী 20

  • নিকটতম একাধিক 3হয় 21, যা হয় তার চেয়ে অনেক বেশী 20, তাই এটি আউটপুট।

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

#Input  #Output
2       3
4       5
6       4
8       3
10      4
12      7
14      3
16      6
18      4
20      3
22      4
24      5
26      3
28      5
30      4
32      3
34      4
36      8
38      3
40      6
42      4
44      3
46      4
48      5
50      3
52      6
54      4
56      3
58      4
60      7
62      3
64      5
66      4
68      3
70      4
72      11
74      3
76      6
78      4
80      3
82      4
84      5
86      3
88      5
90      4
92      3
94      4
96      7
98      3
1000    6

কোনও বিজোড় ইনপুট দেওয়া আউটপুট 2 হওয়া উচিত।

বিধি

  • n এর চেয়ে কম ধনাত্মক পূর্ণসংখ্যা is 2^32
  • বৃত্তাকারটি এমনভাবে সম্পাদন করা হয় যে দুটি গুনগুলি যদি kসমানভাবে দূরে থাকে nতবে বৃহত্তর একটিটি বেছে নেওয়া হয় ( "বৃত্তাকার অর্ধেক আপ" )। এইভাবে, প্রতিটি বিজোড় nএকটি আউটপুট ফলন করে 2
  • এটি , তাই প্রতিটি ভাষার মধ্যে সংক্ষিপ্ততম কোড জিততে পারে।

আমি আপনার পরীক্ষার কেসগুলির ফর্ম্যাটটি সম্পাদনা করেছি যাতে এটি পড়া সহজ হয় এবং আরও সংক্ষিপ্ত হয়। আপনার যদি এ নিয়ে কোনও সমস্যা আছে বা নতুন উদাহরণগুলির কোনও বন্ধ রয়েছে তবে আমাকে জানান। :)
ডিজেএমসিএমহেম

@ শেগি সম্পন্ন! আমি তালিকাটি থেকে 500 টি মতামত এবং 450 সন্ধ্যায় সরিয়েছি।
অগ্নিনির্বাপক 24

এই অনুক্রমের জন্য একটি ওয়েস লিঙ্ক আছে?
জেমস কে

@ জেমসকে আমি আগে অনুসন্ধান করলে আমি একটিও পাইনি। সম্ভবত একটি OEIS অ্যাকাউন্টের সাথে একটি এটি তৈরি করতে পারে?
অগ্নিনির্বাপক 24

উত্তর:



9

জাপট , 6 বাইট

@<rX}a

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

ব্যাখ্যা:

@    <r X}a
XYZ{U<UrX}a
X              // X = 0; Increments when the condition in between {...} fails
   {     }a    // Return the first integer X where:
    U          //   The input
     <U        //   is less than the input
       rX      //     rounded to the nearest multiple of X

2
rএকটি অন্তর্নির্মিত? o_o
এরিক দি আউটগলফার

@ এরিকথ আউটগল্ফার: জাপটকে গোল করার জন্য বা ডাউন করার জন্য বিল্ট-ইন রয়েছে :)
শেগি

5
আমি জানতাম এই বৈশিষ্ট্যটি কোনও দিন কার্যকর হবে: ডি
ইটিএইচ প্রডাকশনগুলি

@ শেগি যে বাদাম! o_o_o
এরিক আউটগল্ফার

@ অলিভার: এটি এখন ফাংশন পদ্ধতিগুলির সাথে আঁকড়ে ধরতে আমার আরও দৃ convinced়প্রত্যয়ী হয়েছে - এটির আমার নিজস্ব সংস্করণ ছিল 7 বাইট:o æ@<rX
শেগি

7

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

tQ:yy/Yo*<fX<

এটি অনলাইন চেষ্টা করুন! অথবা থেকে সমস্ত ইনপুট যাচাই 1করার জন্য1000

ব্যাখ্যা

ইনপুট বিবেচনা করুন 6

t      % Implicit input. Duplicate
       % STACK: 6, 6
Q:     % Add 1, range
       % STACK: 6, [1 2 3 4 5 6 7]
yy     % Duplicate top two elements
       % STACK: 6, [1 2 3 4 5 6 7], 6, [1 2 3 4 5 6 7]
/      % Divide, element-wise
       % STACK: 6, [1 2 3 4 5 6 7], [6 3 2 1.5 1.2 1 0.8571]
Yo     % Round to closest integer. Halves are rounded up
       % STACK: 6, [1 2 3 4 5 6 7], [6 3 2 2 1 1 1]
*      % Multiply, element-wise
       % STACK: 6, [6 6 6 8 5 6 7]
<      % Less than, element-wise
       % STACK: [0 0 0 1 0 0 1]
f      % Find: indices of nonzeros (1-based)
       % STACK: [4 7]
X<     % Minimum of vector. Implicit display
       % STACK: 4


5

জাভাস্ক্রিপ্ট (ES6), 28 25 বাইট

n=>g=x=>n%x>=x/2?x:g(-~x)
  • 3 বাইট সংরক্ষণ করেছেন আর্নল্ডকে ধন্যবাদ।

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

o.innerText=(f=

n=>g=x=>n%x>=x/2?x:g(-~x)

)(i.value=64)();oninput=_=>o.innerText=f(+i.value)()
<input id=i type=number><pre id=o>

বা 1-1000 থেকে সমস্ত সংখ্যা পরীক্ষা করুন (এটি চালানোর জন্য এক মিনিট দিন):


5

প্রোটন , 33 বাইট

n=>[x for x:2..n+2if n%x>=x/2][0]

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


প্রোটন সম্পর্কে আমি কিছুই জানি না তবে মনে হয় আপনি 3 বাইট সংরক্ষণ করতে পারবেন: অনলাইনে চেষ্টা করে দেখুন!
jferard

সম্ভবত এটি একটি কাকতালীয় ঘটনা, তবে এটি সম্পূর্ণরূপে মানবতার সমাধানের সমান ... ... পি
এরিক দ্য আউটগল্ফার

@ এরিকথিউটগল্ফার আমরা এটি একই সময়ে পোস্ট করেছি (আসলে আমি কয়েক সেকেন্ডের মধ্যে তাকে নিঞ্জা করেছি) হাইপার অপারেটরদের ঘাটাঘাটি করেছে, এবং যখন সেগুলি স্থির করেছে তখন আমরা দুজনেই আপডেট হয়েছি।
মিঃ এক্সকোডার

আহ, আমি তোমাকে আইআইআরসি করেছিলাম। : পি
সম্পূর্ণরূপে

@ টোটালিহুমান আপনি আমাকে 41-বাইটার দিয়ে নিনজ করেছেন। আমি 37 37-বাইটারটি প্রথম পোস্ট করেছি এবং আপনাকে কয়েক সেকেন্ডের পরে সেই নিনজা দিয়েছি।
মিঃ এক্সকডার



3

জেলি , 11 বাইট

÷R%1<.¬;1TṂ

ইতিবাচক পূর্ণসংখ্যার গ্রহণ এবং প্রত্যাবর্তনের জন্য একটি মোনাডিক লিঙ্ক।

এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা স্যুট দেখুন

কিভাবে?

÷R%1<.¬;1TṂ - Link: number, n       e.g. 10
 R          - range(n)               [ 1,2,3     ,4  ,5,6     ,7     ,8   ,9     ,10]
÷           - n divided by           [10,5,3.33..,2.5,2,1.66..,1.42..,1.25,1.11..,1 ]
  %1        - modulo by 1            [ 0,0,0.33..,0.5,0,0.66..,0.42..,0.25,0.11..,0 ]
    <.      - less than 0.5?         [ 1,1,1     ,0  ,1,0     ,1     ,1   ,1     ,1 ]
      ¬     - not                    [ 0,0,0     ,1  ,0,1     ,0     ,0   ,0     ,0 ]
       ;1   - concatenate a 1        [ 0,0,0     ,1  ,0,1     ,0     ,0   ,0     ,0 , 1]
         T  - truthy indices         [            4    ,6                           ,11]
          Ṃ - minimum                4

নোট: এর সংযুক্তকরণের 1মাত্র ক্ষেত্রে যেখানে হ্যান্ডেল হয় nএক 1, 2অথবা 4ফলাফলের করা প্রয়োজন যখন n+1( ‘R÷@%1<.¬TṂএছাড়াও কাজ করবে)।




2

পাইথ, 5 বাইট

fgy%Q

পরীক্ষা স্যুট

কোনও গোলাকার বিল্টিন নেই, কেবল প্রথম ধনাত্মক পূর্ণসংখ্যার টি জন্য পরীক্ষা করা হচ্ছে, যেখানে ডাবল ইনপুট মোড টি টি এর চেয়ে বড় বা সমান।

ব্যাখ্যা:

fgy%Q
fgy%QTT    Implicit variable introduction.
f          Find the first positive integer T such that the following is truthy:
   %QT     Input % T
  y        Doubled
 g    T    Is greater than or equal to T

2

x86 মেশিন কোড, 17 বাইট

এই কোডটি পুনরায় ব্যবহারযোগ্য ফাংশন আকারে একটি মৌলিক, পুনরাবৃত্তি সমাধান প্রয়োগ করে:

31 F6                   xor    esi, esi
46                      inc    esi         ; set ESI (our temp register) to 1

                     Loop:
89 C8                   mov    eax, ecx    ; copy 'n' to EAX for division
46                      inc    esi         ; eagerly increment temp
99                      cdq                ; extend EAX into EDX:EAX
F7 F6                   div    esi         ; divide EDX:EAX by ESI
01 D2                   add    edx, edx    ; multiply remainder by 2
39 F2                   cmp    edx, esi    ; compare remainder*2 to temp
7C F4                   jb     Loop        ; keep looping if remainder*2 < temp

96                      xchg   eax, esi    ; put result into EAX (1 byte shorter than MOV)
C3                      ret

ফাংশনটি ফাস্টকল কলিং কনভেনশন অনুসরণ করে , যাতে একক প্যারামিটার ( n) ECXনিবন্ধনে পাস করা হয় । ফেরতের মান (k ) যথারীতি EAXরেজিস্টারে ফিরে আসে ।

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


2

জাভা 8, 42 বাইট

থেকে ল্যামডা Integerকরতে Integer

n->{for(int f=1;;)if(n%++f*2>=f)return f;}

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

প্রাপ্তি স্বীকার

  • -1 বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ

4
আপনি প্রথমটি f=1ব্যবহার করে শুরু করে এবং এটি ব্যবহার ++fকরে একটি বাইট সংরক্ষণ করতে পারেন f:n->{for(int f=1;;)if(n%++f*2>=f)return f;}
কেভিন ক্রুইজসেন


1

ফোর্থ (গফার্থ) , 45 বাইট

: f 1 begin 1+ 2dup mod over 1+ 2/ >= until ;

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

কোড ব্যাখ্যা

: f             \ start a new word definition
  1             \ start a counter at 1
  begin         \ start an indefinite loop
    1+          \ add 1 to counter
    2dup mod    \ duplicate input value and counter, get remainder of input/counter
    over 1+ 2/  \ get counter/2 (add 1 to force rounding up)
    >=          \ check if remainder is greater than counter/2
  until         \ end loop if true, otherwise go back to beginning
;               \ end word definition

1

05 এ বি 1 ই , 9 বাইট

∞.ΔIs/Dò‹

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

ব্যাখ্যা

∞.ΔIs/Dò‹ Full code
∞.Δ       Returns the first number for which the following code returns true
             -> stack is [n]
   Is     Push the input and swap the stack -> stack is [input, n]
     /    Divide both of them -> stack is [input/n]
      Dò  Duplicate and round the second -> stack is [input/n, rounded(input/n)]
        ‹ Check if input/n got larger by rounding -> stack is [bool]
             -> if bool is true, abort and return the current number

1

রকস্টার , 681 বাইট

Thought takes Patience and Control
While Patience is as high as Control
Let Patience be without Control

Give back Patience

Rock takes Art
Love is neverending
Sex is bottomless
Put Thought taking Art & Love into your head
If your head is Sex
Give back Art
Else
Limits are inspiration
Put Art with Limits without your head into the rubbish
Give back the rubbish


Listen to Chance
Questions are unstoppable
Until Questions is Chance
Build Questions up
Put Thought taking Chance, Questions into your mind
Answers are independence (but)
Put Questions over Answers into the world
Put Rock taking the world into the world
If your mind is as big as the world
Say Questions
Break it down

আপনি রকস্টারকে অনলাইনে চেষ্টা করতে পারেন , তবে আপনাকে কোডটি অনুলিপি করে পেস্ট করতে হবে। এটি আপনাকে একটি ইনপুট নম্বর জিজ্ঞাসা করবে।

আমি সর্বনিম্ন বাইট গণনা করতে যাইনি, কারণ রকস্টার স্পষ্টতই গল্ফিংয়ের জন্য তৈরি হয় নি, তাই পরিবর্তে আমি রক 'এন' রোল গানের জন্য যাওয়ার চেষ্টা করেছি।

ব্যাখ্যা:

এটি অন্যদের মতো একই সমাধানের ভিত্তিতে তৈরি (অজগর, জাভা):

Iterate up from 2:
if n % iterator >= ceil(n/2)
    return iterator

প্রথমে আমাকে মডুলাস এবং সিলিং ফাংশনগুলি সংজ্ঞায়িত করতে হবে যদিও কবিতার পক্ষে যাকে থট অ্যান্ড রক বলা হয়।

নীচে বিভিন্ন ভেরিয়েবল নাম সহ একটি কম কাব্যিক সংস্করণ রয়েছে এবং যেখানে বাক্য গঠনটি অস্পষ্ট তা ব্যাখ্যা রয়েছে। অভিভাবকরা মন্তব্য মন্তব্য করে।

Modulus takes Number and Divisor
While Number is as high as Divisor
Put Number minus Divisor into Number
    (blank line ending While block)
Give back Number (return Number)
    (blank line ending function declaration)
Ceil takes Decimal
Put Modulus taking Decimal, 1 into Remainder
If Remainder is 0
Give back Decimal (return Decimal)
Else
Put Decimal with 1 minus Remainder into Result
Give back Result (return Result)
    (blank line ending if block)
    (blank line ending function declaration)
Listen to Input (Read from STDIN to Input)
Index is 1
Until Index is Input
Build Index up (Increment by 1)
Put Modulus taking Input, Index into LHS
Put Index over 2 into RHS
Put Ceil taking RHS into RHS
If LHS is as big as RHS
Say Index
Break it down (Break from loop)

0

জেলি , 18 বাইট

ɓ÷Ḟ,¥Ċ$×ạÐṂ⁸Ṁ>⁸µ1#

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

পুরো প্রোগ্রাম।


3
Full program.কখন হয় না?
সম্পূর্ণরূপে

@ টোটালিহুমান কখনও কখনও এটি একটি ফাংশন হিসাবেও কাজ করে।
এরিক দ্য আউটগলফার

0

সুইফট 3 , 51 বাইট

{n in(2..<n+2).filter{Float(n%$0)>=Float($0)/2}[0]}

কিছু অত্যন্ত উদ্ভট কারণে, [0]অনলাইনে কাজ করে না। এখানে অনলাইন সংকলক-সামঞ্জস্যপূর্ণ সংস্করণ ( .first!পরিবর্তে এটি ব্যবহার করে):

{n in(2..<n+2).filter{Float(n%$0)>=Float($0)/2}.first!}

পরীক্ষার স্যুট (অনলাইন-সামঞ্জস্যপূর্ণ)।



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