একটি ফাংশন এফ সংজ্ঞায়িত করুন যেমন f (f (n)) = -n সমস্ত অ-শূন্য পূর্ণসংখ্যার জন্য এন


43

এই চ্যালেঞ্জটি আমি প্রায়শই একটি প্রোগ্রামিং ব্লগ দ্বারা অনুপ্রাণিত হয়েছিল। দয়া করে এখানে মূল পোস্টটি দেখুন: একটি প্রোগ্রামিং ধাঁধা


চ্যালেঞ্জ

কোনও ফাংশনটি f:Q->Qএমনভাবে সংজ্ঞায়িত করুন যে f(f(n)) = -nসমস্ত অ-শূন্য পূর্ণ পূর্ণসংখ্যার জন্য nএবং যেখানে Qযুক্তিযুক্ত সংখ্যার সেট।

বিস্তারিত

যাই হোক না কেন আপনার পছন্দের ভাষায়, নির্ধারণ দয়া এক ফাংশন বা প্রোগ্রাম fযে প্যারামিটার হিসাবে গ্রহণ করে এক নম্বর nএবং আয় বা আউটপুট এক নম্বর f(n)

আপনার ভাষার জন্য যে কোনও পদ্ধতির মাধ্যমে ইনপুট সরবরাহ করা যেতে পারে: ফাংশন আর্গুমেন্ট, এসটিডিএন থেকে পাঠানো, কমান্ড-লাইন আর্গুমেন্ট, স্ট্যাক অবস্থান, ভয়েস ইনপুট, গ্যাং লক্ষণ ইত্যাদি etc.

আউটপুট কোনও ফাংশন / প্রোগ্রাম থেকে ফেরত মান হওয়া বা STDOUT এ মুদ্রিত হওয়া উচিত।

আমি ফাংশনগুলির বাইরে থেকে দৃশ্যমান প্রোগ্রামের অবস্থা বা গ্লোবাল মেমরি / ডেটার সুবিধা গ্রহণ না করে এমন ফাংশনগুলির উত্তরগুলিকে সীমাবদ্ধ রাখতে চাই f। উদাহরণস্বরূপ, এর বাইরে কাউন্টার রাখা fকতবার কল করা fহয়েছিল তা গণনা করা এবং এই গণনার উপর ভিত্তি করে কেবল একটি প্রত্যাখ্যান করা কারও পক্ষে খুব চ্যালেঞ্জিং বা আকর্ষণীয় নয়। সিদ্ধান্তগুলি fকেবলমাত্র fএর লেজিকাল স্কোপের মধ্যে থাকা ডেটার উপর নির্ভর করে ।

তবে এই সীমাবদ্ধতা সম্ভবত কিছু স্ট্যাক-ওরিয়েন্টেড ভাষা বা অন্যান্য ধরণের ভাষার জন্য অনুপযুক্ত যা এই ধরণের ডেটা বা স্কোপগুলিকে আলাদা করে না। এই চ্যালেঞ্জের চেতনা ধরে রাখতে দয়া করে আপনার সর্বোত্তম রায়টি ব্যবহার করুন।


স্কোরিং

প্রচলিত কোড গল্ফ নিয়ম প্রযোজ্য your আপনার স্কোরটি আপনার উত্স কোডে বাইট সংখ্যা ।

সংক্ষিপ্ত উত্তর ডোমেন এবং এর codomain প্রয়োজন frationals একটি উপসেট হতে Q। আপনি যদি আপনার ডোমেন এবং কোডোমেনটিকে fপূর্ণসংখ্যার মধ্যে সীমাবদ্ধ করেন Z, তবে আপনার স্কোরটি আপনার উত্স কোডে বাইটের সংখ্যার 90% সিলিং ।

Tiebreak

টাই হওয়ার ক্ষেত্রে, নিম্নলিখিতগুলি ক্রমে ব্যবহৃত হবে:

  1. আপনার উত্স কোডে মুদ্রণযোগ্য অ-শ্বেত স্পেস প্রতীকগুলির সংখ্যা সবচেয়ে কম
  2. উত্তর জমা দেওয়ার প্রথম তারিখ এবং সময়

সম্পাদন করা

আপনাকে নির্বিচারে আকারের সংখ্যাগুলি সমর্থন করার দরকার নেই। দয়া করে আপনার নির্বাচিত ভাষায় সেটগুলি Zএবং Qডেটাটাইপ হিসাবে ব্যাখ্যা করুন (সাধারণত যথাক্রমে পূর্ণসংখ্যা এবং ভাসমান পয়েন্ট)।

যদি আপনার সমাধানটি পুরোপুরি কোনও ডেটা টাইপের অন্তর্নিহিত কাঠামো বা বিট প্যাটার্নের উপর নির্ভর করে তবে দয়া করে এর সীমাবদ্ধতাগুলি এবং এটি কীভাবে ব্যবহৃত হচ্ছে তা বর্ণনা করুন।


20
f (n) = i * n - খাঁটি গণিত: পি
জোহানেস কুহন

8
@ জোহনেসকুহান এই কারণেই ডোমেন এবং
কোডোমেন

আপনি কি f:Q->Qবোঝাতে পারবেন?
beary605

@ beary605 এর অর্থ fহ'ল Qঅন্য সদস্যদের (সম্ভবত একই) এর সদস্যদের (যুক্তিসঙ্গত সংখ্যা) ম্যাপিং একটি ফাংশন Q। দেখতে en.wikipedia.org/wiki/Function_(mathematics)#Notation
ardnew

7
আমি জানতাম যে আমি সম্প্রতি এটি দেখেছি, তবে কোথায় তা মনে রাখতে একটু সময় লেগেছে। স্ট্যাক ওভারফ্লোতে একটি কম শক্তভাবে নির্দিষ্ট সংস্করণটি সম্প্রতি বন্ধ ছিল was 100 টিরও বেশি উত্তর।
পিটার টেলর

উত্তর:


12

জে, 9 পয়েন্ট (10 টি অক্ষর)

স্ট্যাকওভারফ্লো উত্তরের ভিত্তিতে :

   (*-[*_1&^)

প্রথম ধারণা (১৩ টি চর):

   ((-*)-2&|*+:)

   ((-*)-2&|*+:) _10 _9 _8 _7 _6 _5 _4 _3 _2 _1 0 1 2 3 4 5 6 7 8 9 10
_9 10 _7 8 _5 6 _3 4 _1 2 0 _2 1 _4 3 _6 5 _8 7 _10 9

   ((-*)-2&|*+:) _9 10 _7 8 _5 6 _3 4 _1 2 0 _2 1 _4 3 _6 5 _8 7 _10 9
10 9 8 7 6 5 4 3 2 1 0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10

এটি পূর্ণসংখ্যার ইনপুটটির জন্য কাজ করে, তবে এটি ভাসমান পয়েন্টের মানগুলির জন্য কল্পিত আউটপুট তৈরি করে (ফাংশনটি
অনুমান

5
@ উদ্বিগ্নতা, অনুমানটি বিভ্রান্তিকর শব্দযুক্ত, তবে আমি এটি পড়ার সাথে সাথে এটি ডোমেন এবং কোডোমেনকে পূর্ণসংখ্যায় সীমাবদ্ধ করে।
পিটার টেলর

আপনার প্রথম বন্ধনী দরকার?
সাইওস

14

পাইথন: 61 34 30 29 27 পয়েন্ট

চ: প্রশ্ন -> প্রশ্ন

অঙ্কে:

       | 0.5-x   if x is in Q \ Z
f(x) = |
       | x+0.5   if x is in Z

পাইথনে:

f=lambda x:.5+[x,-x][x%1>0]

পরীক্ষিত

filter(lambda n: n[0] != -n[1], map(lambda n:(n,f(f(n))),range(0,50)))

এর পিছনে যুক্তি:

যখন আপনি একটি পূর্ণসংখ্যা নিতে nএবং এটি করা মধ্যে fআপনি পাবেন x+0.5। এটি আর কোনও পূর্ণসংখ্যা নয়, সুতরাং পরবর্তী অ্যাপ্লিকেশনটি 0.5-(x+0.5)যা হবে -x

ক্রেডিট

ধন্যবাদ

  • এটিকে 61১ টি অক্ষর থেকে ৩৪ টি অক্ষরে নামানোর জন্য বাকুরিউ
  • কোডের আকার আরও 30 টি অক্ষরে হ্রাস করার জন্য অস্থিরতা
  • কোডের আকারটি 29 টি অক্ষরে হ্রাস করার জন্য অনুলিপি করুন (এবং একটি সম্ভাব্য ভাসমান পয়েন্ট সমস্যার সমাধান)।
  • উপরের পরিবর্তনগুলি নিয়ে আসা একটি অসঙ্গতি উল্লেখ করার জন্য অ্যাডিটসু

নোট

প্রথমে আমি ভেবেছিলাম এটি ঠিক আছে

f = lambda n: 1j*n

তবে এর চ: এন-> সি এবং এটি অনুমোদিত নয়: - /


1
এখানে নামিয়ে দেওয়া যায়: f=lambda x:x%1>0and(-x+x%1)or x+.1যা কেবলমাত্র 34 টি অক্ষর দীর্ঘ।
বাকুরিউ

f=lambda x:[x+.1,x%1-x](x%1>0)শুধুমাত্র 30
অস্থিরতা

1
এক খাটো গৃহস্থালি: f=lambda x:[x+.5,.5-x][x%1>0]। নির্ভুলতার সমস্যাগুলি ঘটার জন্য .1 এর পরিবর্তে .5 ব্যবহার নোট করুন
অনুলিপি করুন

1
@ AJMansfield 1.48 একটি পূর্ণসংখ্যা নয়।
মার্টিন থোমা

1
না, এর অর্থ এই নয়। যদি সে বিষয়টি বোঝায় তবে তার উচিত "সমস্ত যুক্তিযুক্ত সংখ্যা" লেখা উচিত ছিল। f:Q->Qকেবলমাত্র এর অর্থ এফটি যুক্তিযুক্ত সংখ্যার সাথে যৌক্তিক সংখ্যাটিকে মানচিত্র করে। যা আমার চ এর সংজ্ঞা।
মার্টিন থোমা

11

সি, 41 পয়েন্ট (41 বা 45 অক্ষর)

32- এবং 64-বিট উভয়ই ব্যবহার করে কাজ করে।

f : Z -> Z(বাদে INT_MAX):

f(n){return (abs(n)%2*2-1)*n+n?(-n<n)*2-1:0;}

যদি আমাদের অন্তর্ভুক্ত না করতে হয় তবে আমরা 0কিছু অক্ষর শেভ করতে পারি (41 টি অক্ষর):

f : Z -> Z(বাদে 0এবং INT_MAX):

f(n){return (abs(n)%2*2-1)*n+(-n<n)*2-1;}

এই ফাংশনটি সমস্ত চিহ্নগুলি তাদের চিহ্ন এবং সমতার ভিত্তিতে 4 টি গ্রুপে ভাগ করে কাজ করে।

সুতরাং আমরা 4 টি বিভিন্ন সমন্বয় আছে:

+ even, + odd, - even, - odd

যেহেতু আমাদের সংখ্যার চিহ্নটি স্যুইচ করতে হবে তবে দুটি পাসের পরে সমতা নয়, আমরা দুটি ভিন্ন সম্ভাব্য সিকোয়েন্স পেয়েছি:

  + even -> - odd -> - even -> + odd -\
^-------------------------------------/

  + even -> + odd -> - even -> - odd -\
^-------------------------------------/

এই উদাহরণে আমি প্রথমটি বেছে নিয়েছি।

প্রথমে আমাদের সকল ধনাত্মক পূর্ণসংখ্যাকে বিজোড় নেতিবাচক পূর্ণসংখ্যার মানচিত্র তৈরি করতে হবে। আমরা সাইন পরিবর্তন করে এবং সংখ্যা বৃদ্ধি করে এটি করি (আপনি তার পরিবর্তে সংখ্যা হ্রাসও চয়ন করতে পারেন):

f1(n) = -n + 1

আমাদের তখন এমনকি নেতিবাচক পূর্ণসংখ্যার সমস্ত বিজোড় নেতিবাচক পূর্ণসংখ্যার মানচিত্র তৈরি করতে হবে। আমাদের তা নিশ্চিত করা দরকার f2(f1(n)) = -n:

f2(f1(n)) = -n
f2(-n + 1) = -n
f2(-n) = -n - 1
f2(n) = n - 1

আমরা খুঁজে পাওয়া একই পদ্ধতিগুলি ব্যবহার করে f3এবং f4:

f3(n) = -n - 1
f4(n) =  n + 1

এই ফাংশনগুলিকে একটি একক ফাংশনে একত্রিত করতে, আমরা লক্ষ্য করেছি যে প্রতিবারের মতো nআমরা স্বাক্ষর স্যুইচ করি nএবং প্রতিটি সময় nইতিবাচক আমরা একের সাথে বৃদ্ধি করি এবং অন্যথায় আমরা একে একে হ্রাস পাই:

f1(n) = -n + 1 (+ even)
f2(n) =  n - 1 (- odd)
f2(n) = -n - 1 (- even)
f4(n) =  n + 1 (+ odd)

এটি এভাবে লিখতে পারা যায়:

f(n) = odd(n) * n + sign(n)

যেখানে বিজোড় সংখ্যা এবং এমনকি সংখ্যার জন্য odd(n)ফিরে আসে ।1-1

মোট 4 টি সমাধান রয়েছে:

f(n) = odd(n) * n + sign(n)  (edge cases: f(f(0))  -> -2, f(f(INT_MAX))   -> -8)
f(n) = even(n) * n - sign(n) (edge cases: f(f(0))  -> -2, f(f(INT_MIN+1)) -> -6)
f(n) = odd(n) * n - sign(n)  (edge cases: f(f(1))  -> -3, f(f(INT_MIN))   -> -5)
f(n) = even(n) * n + sign(n) (edge cases: f(f(-1)) -> -1, f(f(INT_MIN))   -> -5)

INT_MIN-INT_MIN == INT_MIN=> হিসাবে সব 4 ফাংশনে সর্বদা একটি এজ কেস হিসাবে বিবেচনা করা যেতে পারে f(f(INT_MIN)) = INT_MIN


এটি মূলত আমার গল্ফস্ক্রিপ্ট উত্তরের মতো (আরও ভালভাবে ব্যাখ্যা করা ছাড়া)। এই 0 জন্য কাজ করে?
বেন রিখ

@ বেনরিচ উত্তর হিসাবে যেমনটি বলেছেন যে এটি 0এবং অন্যান্য 3 সংখ্যার জন্য কাজ করে না ।
Tyilo

1
টাইলিও এখনই দেখছি। ইন্দ্রিয় তোলে। মনে হচ্ছে আপনার Zবোনাসটি নেওয়া উচিত যদি আপনি কমপক্ষে 0 টি কভার করেন।
বেন রেইচ

আমি এটি ঠিক না করা পর্যন্ত @ বেনারিক বোনাসটি সরিয়ে ফেলুন।
Tyilo

9

এখানে আমার যেতে।

long f(int i){return i;}
int f(long i){return -i;}

সরাসরি উদাহরণ :

int main()
{
  for(int i=-10; i<10; i=i+3)
    std::cout << f(f(i)) << "\n";
}

সিএনপি ইনপুট টাইপগুলি আপনার প্রয়োজন অনুসারে নির্বিচারে তৈরি করা হবে। এই সংস্করণটি পূর্ণসংখ্যার আক্ষরিক জন্য কাজ করে যা 2 ^ 32-1 এর চেয়ে কম আকারের হয়।


2
সমস্যা বলেছে f:Q->Q, না f:Z->Z
এজেম্যানসফিল্ড

@AJMansfield বৈশিষ্ট স্কোরিং অধ্যায় সংজ্ঞায়িত ফাংশন জন্য অফার বোনাস পয়েন্ট অভিপ্রেত ছিল f:Z->Z, দুঃখিত বিভ্রান্তিকর বাক্যে কথন জন্য
ardnew

6
এই উত্তরের সমস্যাটি হ'ল এটি দুটি পৃথক ফাংশন সংজ্ঞায়িত করে বলে মনে হচ্ছে, যখন অনুমানের জন্য আপনাকে কেবল একটির সংজ্ঞা দেওয়া দরকার। কিন্তু আমি শব্দার্থবিদ্যা বিতর্ক শুরু করার জন্য বলছি না, এটা এখনও একটি খুব চিন্তাশীল সমাধান
ardnew

@ আরনেউ, ওহ ঠিক বলেছেন এসও চ্যাটে লাউঞ্জ <সি ++> এর সাথে ভাগ করে নেওয়ার মাত্র কয়েক সেকেন্ড আগে আমাকে এই বৈধ আপত্তির প্রতি আকৃষ্ট করা হয়েছিল। আমি অবাক হই যে সংকলক এটি কী করে (যদি এটি কলগুলিকে ইনলাইন করে না) তবে আমার সমাবেশটি সফল হয়।
রুবেনভবি

1
আমি মনে করি আপনি স্থানটি সরিয়ে ফেলতে পারেনreturn -i
সাইয়েস

6

জাভাস্ক্রিপ্ট, 18

f=n=>n%1?.5-n:n+.5

নতুন ফ্যাট তীর চিহ্ন ব্যবহার করে (ফায়ারফক্স 22)

অন্যান্য সংস্করণ (18):

f=n=>n%1?-.5/n:.5/n

পূর্ববর্তী সংস্করণ (20):

f=n=>n-~~n?.5-n:n+.5

উদাহরণ:

> [-3,-2,-1,1,2,3].map(f).map(f)
[3, 2, 1, -1, -2, -3]

10
দেখে মনে হচ্ছে জাভা স্ক্রিপ্টটি কফিস্ক্রিপ্টে বিকশিত হচ্ছে।
পিটার টেলর

4

গণিত 18

f=#+1/2-4#(#-⌊#⌋)&

এখানে ⌊...⌋মেঝে ফাংশন। এটি কেবল যুক্তিযুক্ত সংখ্যা ব্যবহার করে (তালিকা নয়, জটিল সংখ্যা ইত্যাদি)

f[10]
f[f[10]]

21/2

-10

f[-5]
f[f[-5]]

-9/2

5


3

x86 সমাবেশের ভাষা (এফএএসএম)। যুক্তি এবং ফলাফলটি ইক্স রেজিস্টারে রয়েছে।

এটি -2 ^ 30 <এন <+ 2 ^ 30-1 এর জন্য সঠিকভাবে কাজ করে

16 বাইট এক্সিকিউটেবল কোড।

        use32

f_n:
        lea     edx, [2*eax]
        xor     edx, eax
        btc     eax, 30
        shl     edx, 1
        jnc     .end
        neg     eax
.end:
        retn

আপনার সংখ্যা নিতপিকিং; 2E30 2 * 10 ^ 30 হবে, 2 ^ 30 নয় আমার মনে হয় আপনি চান।
নিক টি

@ নিকট আমার ভুল সংশোধন করা হয়েছে।
ফাউন্ড

আমি নিশ্চিত যে আপনার উত্স কোডে বাইটগুলি গণনা করার কথা।
nyuszika7h

3

কমন লিস্প: 35 বাইট

(defun f(x)(/(if(> 1 x)-1/2 1/2)x))

স্কিম (এবং র‌্যাকেট): 36 বাইট

(define(f x)(/(if(> 1 x)-1/2 1/2)x))

মন্তব্য এবং ব্যাখ্যা দিয়ে দোষহীন:

(define (f x)
  (/             ;; divide
     (if (> 1 x) ;; if x is below 1 
         -1/2    ;; then -1/2 (the fraction)
         1/2)    ;; else 1/2 (the fraction)
      x))        ;; gets divided with x

জন্য কোন সংখ্যা xমধ্যে ভগ্নাংশ পরিণত হবে যা উভয় ভাষায় একটি বাস্তব সঠিক সংখ্যা।[1,->]if1/2

বিভাজন অংশটি তখন পরিণত হবে (/ 1/2 x)যাতে ভগ্নাংশটি 1/(x*2)সর্বদা নীচে থাকে 1। জন্য 1এটা হবে 1/2, জন্য 2এটা 1/4, ইত্যাদি

1 এর নীচের যে কোনও সংখ্যার ifজন্য ভগ্নাংশের দিকে ফিরে আসবে -1/2, যা ফাংশনটি করে তোলে (/ -1/2 x)যা -1/(2*x)কিন্তু আমরা যেহেতু পূর্বের রানের ফলস্বরূপ আশা করতে পারি আমরা ডাবল অ্যাপ্লিকেশন তৈরি করতে 1 / (x * 2) এর জন্য x প্রতিস্থাপন করতে পারি-1/((1/(x*2))*2) = -x

যেমন যেহেতু 1মধ্যে সক্রিয় 1/2দ্বিতীয় আবেদন(/ -1/2 1/2) ==> -1


কিভাবে কাজ করে?
এজেম্যান্সফিল্ড 21

@ AJMansfield কিছু তথ্য যুক্ত করেছে। অস্পষ্ট কিছু আছে কিনা তা জিজ্ঞাসা করুন। এলআইএসপি সিনট্যাক্স পড়া গ্রীকের মতো হয় যদি আপনি এটি না শিখে থাকেন এবং অভ্যস্ত হতে কয়েক সপ্তাহ সময় লাগে।
সিলেস্টার

3

সি, 60 (⌈66 * .9⌉)

int f(int x){if(!x&1||!~x)return ~x;if(x<0)return x-1;return x+1;}

এখানে একটি নিঃশর্ত সংস্করণ:

int f(int x){
    if(!x&1 || !~x) return ~x;
    if(x<0) return x-1;
    return x+1;
}

এই পদ্ধতিটি কেবলমাত্র পূর্ণসংখ্যা ব্যবহার করে কাজ করে, সুতরাং এটি 90% স্কোর বোনাস পায়। আমি মূলত এটি জাভাতে লিখছিলাম, তবে বুঝতে পেরেছিলাম যে এই প্রোগ্রামটি বিশেষত সি-স্টাইলের লজিকাল অপারেটরদের দ্বারা উপকৃত হতে পারে।

যার সাথে কোনও সংখ্যার সাথে সম্পর্কিত নয় -INT_MIN, পরিবর্তে f(f(INT_MIN))ফিরে আসে INT_MIN

অন্তর্নিহিত ম্যাপিং বীজগণিতিকভাবে বরং সহজ rather বিবৃতি কার্যকর করা x=f(x)এক্স এর সাথে প্রতিস্থাপন করে:

  • x+1, যদি xইতিবাচক এবং বিজোড় হয়
  • -x+1, যদি xইতিবাচক এবং এমনকি হয়
  • x-1, যদি xনেতিবাচক এবং বিজোড় হয়
  • -x-1, যদি xনেতিবাচক এবং এমনকি হয়

প্রতিটি মামলার ফলাফল পরের বার x এর সাথে প্রয়োগ করার পরে পরবর্তী মামলার আওতায় আসবে।

আপনি দেখতে পাচ্ছেন, কেসটি ফলন করার পরে কেসটি রচনা করে -x

কোডটি দু'জনের প্রশংসা পূর্ণসংখ্যার বিট কাঠামোর সুবিধা গ্রহণের জন্য ফাংশনটির কিছু চতুর সরলকরণের ফলস্বরূপ।


3

> <> , 21 + 3 = 24 বাইট, 22 পয়েন্ট

:0)$:0($:1$2%2*-*+-n;

ব্যবহার করুন কর্মকর্তা পাইথন ইন্টারপ্রেটার , এবং ব্যবহার -vকমান্ড লাইন বিকল্প ইনপুট প্রবেশ করতে, 3 বাইট একটি খরচে।

আমার অনুভূতি আছে যে এটি আরও ভাল হতে পারে - আমি এটি দেখতে থাকব এবং এটিকে গল্ফ করার চেষ্টা করব।

ইনপুট দেওয়া হয়েছে n, প্রোগ্রাম আউটপুট

(n>0) - ((n<0) + n * (1 - 2*(n%2)))

কোথায় (n>0)এবং (n<0)বুলিয়ান হয়। এটি জেলাটিনের পাইথন উত্তরের সমতুল্য

(n>0) - (n<0) - n * (-1)**n

তবে ><>বিল্ট-ইন এক্সপেনসেটেশন অপারেটর নেই তাই আমরা তার (1 - 2*(n%2))জায়গায় ব্যবহার করব (-1)**n

গাণিতিক তত্ত্বটি যা অনুসরণ করে তা হ'ল - যদি আপনি আগ্রহী হন তবে (এবং কেবল যদি) পড়ুন:

সবার জন্য f: Z -> Zযেমন কোনও ফাংশন দেওয়া হয় , আমরা তাত্ক্ষণিকভাবে তা দেখতে পাই বা অন্য কথায়, এটি পরিচয় ফাংশন। বিশেষত, বিবর্তনযোগ্য এবং এর বিপরীত কার্য । এভাবে একটি বিন্যাস হয় এবং যেহেতু , এটা অনুসরণ করে প্রতিটি কক্ষপথে (অথবা চক্র) যে আকার পারেন হয়েছে , অথবা ।f(f(n)) = -nnZf(f(f(f(n)))) = nf^4ff^3fZf^4 = Idf124

পরবর্তী, আমরা এটি দেখতে f(0) = 0। প্রুফ:, f(0) = f(-0) = f(f(f(0))) = -f(0)তাই f(0) = 0, পছন্দসই হিসাবে। বিপরীতভাবে, ধরুন xদৈর্ঘ্য একটি চক্র হয় 1বা 2, তাই f(f(x)) = x। তারপর -x = xতাই x = 0

এভাবে f4-চক্র সম্পূর্ণরূপে গঠিত এ সংশোধন করা হয়েছে পয়েন্ট (1-চক্র) ছাড়া 0

তদ্ব্যতীত, প্রতিটি 4-চক্রের অবশ্যই ফর্ম থাকতে হবে (x, y, -x, -y)এবং চারপাশে চক্রটি ঘোরানোর মাধ্যমে আমরা এটি ধরে নিতে পারি xএবং yউভয়ই ইতিবাচক। বিপরীতভাবে, ননজারো পূর্ণসংখ্যা বিভাজনকারী 4-চক্রের প্রতিটি পণ্যই একটি পছন্দ নির্ধারণ করে f

সুতরাং প্রতিটি পছন্দ fএকটি নির্দেশক গ্রাফের সাথে স্বতন্ত্রভাবে মিলিত হয় যার প্রান্তগুলি ধনাত্মক পূর্ণসংখ্যা, যেমন প্রতিটি শীর্ষবিন্দু হ'ল প্রবেশ বা প্রস্থান করে ঠিক একটি তীরের সাথে সম্পর্কিত। আরও স্পষ্টভাবে, অন্তর্নিহিত পুনর্নির্দেশিত গ্রাফে, প্রতিটি প্রান্তের ঠিক ডিগ্রি থাকে 1। (প্রতিটি 4-চক্রের (x y -x -y)সাথে xএবং yধনাত্মক তীরটির সাথে মিল রয়েছে x --> y))

এই উত্তরটি (এবং এখানে বেশ কয়েকটি উত্তর) ফাংশন গ্রাফ যেখানে অনুরূপ 1 --> 2, 3 --> 4এবং সাধারণভাবে 2k-1 --> 2k

এই ধরনের গ্রাফ আদেশ যুগলের অসীম সিকোয়েন্স সঙ্গে bijection হয় (a_n, p_n), যেখানে প্রতিটি a_nএকটি ধনাত্মক পূর্ণসংখ্যা এবং এতে প্রতিটি p_nপারেন হয় 0বা 1একটি ক্রম দেওয়া হলে (a_1, p_1), (a_2, p_2), (a_3, p_3), ...আমাদের প্রথমে যুগল 1সঙ্গে 1 + a_1এবং তারপর আমরা পারেন তীর গঠন 1 --> 1 + a_1অথবা তীর 1 + a_1 --> 1কিনা তার উপর নির্ভর করে p_1হয় 0বা 1। মূলত, তীরটি হয় একটি <চিহ্ন বা >চিহ্ন, এর সাম্যের উপর নির্ভর করে p_1

এরপরে, ক্ষুদ্রতম অযৌক্তিক ধনাত্মক পূর্ণসংখ্যাটি গ্রহণ করুন kএবং kঠিক a_2পদক্ষেপগুলি থেকে গণনা করুন , ইতিমধ্যে কোনও কিছুর সাথে জুটিবদ্ধ যে কোনও সংখ্যার স্কিপিং করুন। জুড়ি kফলাফলের সঙ্গে, এবং তার উপর নির্ভর করে তীর অভিমুখে সেট p_2উপরে হিসাবে। তারপরে পুনরাবৃত্তি করুন (a_3, p_3)ইত্যাদি

প্রতিটি তীর শেষ পর্যন্ত এইভাবে নির্ধারিত হবে, সুতরাং প্রক্রিয়াটি ভালভাবে সংজ্ঞায়িত হয়েছে। এই উত্তরের ক্রিয়াটি ক্রমটির সাথে সামঞ্জস্য করে (1,0), (1,0), (1,0), ..., যেহেতু ধাপে nক্ষুদ্রতম আনপায়ার্ড পূর্ণসংখ্যা হয় 2n-1এবং কোনও সংখ্যক চেয়ে বড় সংখ্যক বড় সংখ্যা 2n-1থাকে না, তাই আমরা 2n-1 --> 2nপ্রতিটিটির জন্য পাই n( প্রতিটি তীর p_nসমান কারণ এইভাবে তীরগুলি ওরিয়েন্টেড 0)।

এই সেটটির কার্ডিনালিটিটি (N*2)^N = N^Nযা এই উত্তরের শেষ অনুচ্ছেদে সমান হয় 2^N, আসল সংখ্যার কার্ডিনালিটি।


কমান্ড লাইন বিকল্পগুলি সাধারণত প্রতিটি বাইট হয়।
বিড়াল

@ কেট এই মেটা পোস্টে "বিশেষ অনুরোধ" বিভাগটি দেখুন ।
mathmandan

2

পূর্ববর্তী জে উত্তরটি ঠিক করতে (মূল বিষয়ে মন্তব্য করার মতো যথেষ্ট খ্যাতি আমার নেই):

(*+[*1-~2*2|])

এটি কেবল এর _1&^সাথে প্রতিস্থাপন করে 1-~2*2|], যা বিপরীত চিহ্ন দেয়। তাই আমি পরিবর্তিত -একটি থেকে +(যা শুধুমাত্র ইনপুট উপর গুরুত্বপূর্ণ 1এবং _1)।

টেস্টগুলি এখানে:

   (*+[*1-~2*2|])6 3 _9 _8 1r2 _4.6 0 1 _1
7 _2 8 _9 1 7.28 0 2 _2
   (*+[*1-~2*2|])7 _2 8 _9 1 7.28 0 2 _2
_6 _3 9 8 0 _10.3568 0 _1 1

   NB. f^:2 = f@:f
   (*+[*1-~2*2|])^:(2)6 3 _9 _8 1r2 _4.6 0 1 _1
_6 _3 9 8 2 _5.0832 0 _1 1

আপনি দেখতে পাচ্ছেন যে ডোমেন এবং ব্যাপ্তি সমস্ত আসল সংখ্যার, তবে এটি কেবল পূর্ণসংখ্যার জন্য কাজ করে (0 সহ)।

ব্যাখ্যা:

(   *     + [ *  1-~    2*     2|]    )
 signum n + n * pred (twice (n mod 2))

2

GolfScript ceiling(26*.9)=24

গল্ফসক্রিপ্ট কেবল পূর্ণসংখ্যা পরিচালনা করে, সুতরাং Zমোট 24 পয়েন্টের জন্য বোনাস প্রয়োগ করুন :

.{..0>2*(\)2%!2*(@*+}{ }if

0 টির বিশেষ কেসটি 8 টি অক্ষরের জন্য। 0 উপেক্ষা করে আমাদের 17 পয়েন্টের উত্তর থাকতে পারে:

..0>2*(\)2%!2*(@*+

এই কোডটি xস্ট্যাকের শীর্ষে একটি পূর্ণসংখ্যার সাথে নিম্নলিখিতটি করে :

  • যদি x0 হয়, 0স্ট্যাকের উপর ছেড়ে যান এবং আর কোনও বিধি প্রয়োগ করবেন না।
  • যদি xএমনকি অস্বীকার করা হয় x
  • যদি xইতিবাচক হয় তবে অ্যাড করুন 1
  • যদি xনেতিবাচক হয় তবে বিয়োগ করুন 1

এটি যৌক্তিকভাবে একটি চক্রের 4 টি সংখ্যার সেটকে সংযুক্ত করে, যেখানে চক্রের fউপাদানগুলি বিভক্ত করে এবং চক্রের বিপরীত কোণগুলি একে অপরের নেতিবাচক। প্রতিটি পূর্ণসংখ্যা 0 টি বিশেষ কেসযুক্ত বাদে ঠিক 1 টির মতো চক্রের অংশ। উদাহরণস্বরূপ, এর জন্য {-8, -7, 7, 8}:

  • 7 f -> 8
  • 8 f -> -7
  • -7 f -> -8
  • -8 f -> 7

কেবলমাত্র প্রাসঙ্গিক পরীক্ষাগুলি আমি ভাবতে পারি এটি ছিল একটি নেতিবাচক বিজোড়, নেতিবাচক এমনকি, ইতিবাচক বিজোড়, এমনকি ইতিবাচক 0, এবং তারপরে আমি ছুড়েছি -1এবং 1যেহেতু তাদের নৈকট্যজনিত সমস্যাগুলির কারণ 0হতে পারে:

[-10 -5 -1 0 1 5 10]
{.{..0>2*(\)2%!2*(@*+}{ }if}:f;
{f f}%
-> [10,5,1,0,-1,-5,-10]

আমি নিশ্চিত যে আসল গল্ফস্ক্রিপ্ট কিছুটা উন্নত করা যেতে পারে। এটি 26 টি চরিত্র গ্রহণ করা উচিত বলে মনে হচ্ছে না! কিছু পরামর্শ শুনতে পছন্দ করি।


2

জাভা, শুধু মজা করার জন্য

এখানে এমন একটি বাস্তবায়ন রয়েছে যা ℤ এবং between এর মধ্যে একটি সত্যিকারের বাইজেকশন করে যা একই সময়ে (g (-x) == -g (x)) এর মধ্যে একটি বিজোড় ফাংশন । এটি সম্পর্কিত ℤ² উপাদানটিকে একটি জটিল সংখ্যা হিসাবে গণ্য করে এবং এটি "i" দিয়ে গুণ করে, তারপরে আবার ℤ এ রূপান্তর করে ℤ

f (x) = g⁻¹ (ig (x))
f (f (x)) = g⁻¹ (-g (x)) = - x

ফাংশনটি ও (1) এ চলে।

public class Ffn {
    public static int f(int n) {
        if (n == 0) {
            return 0;
        }
        // adjust sign
        int s = n > 0 ? 1 : -1;
        int m = n * s;
        // calculate square "radius"
        int r = (int) (Math.sqrt(2 * m - 1) + 1) / 2;
        int q = r * 2;
        // starting point
        int x = r, y = r;
        int k = q * (r - 1) + 1;

        if (m - k < q) {
            // go left
            x -= m - k;
        }
        else {
            // go left
            x -= q;
            // go down
            y -= m - k - q;
        }

        // multiply by i
        int x2 = -y * s, y2 = x * s;
        // adjust sign
        s = y2 < x2 || y2 == x2 && x2 < 0 ? -1 : 1;
        x2 *= s;
        y2 *= s;

        if (y2 == r) {
            // go left
            k += r - x2;
        }
        else {
            // go left and down
            k += q + r - y2;
        }
        return k * s;
    }

    public static void main(final String... args) {
        for (int i = 0; i < 1000000; ++i) {
            if (f(f(i)) != -i || f(f(-i)) != i) {
                System.out.println(i);
            }
        }
    }
}

পিএস শুভ নববর্ষ!


আমি বিশ্বাস করি যে সাদা স্থান অপ্রয়োজনীয়।
পিপ্পারি

2

পাইথন 3 - 38

@ মুজ এর উত্তরের মতো, তবে f(n) == n,। সমস্ত পূর্ণসংখ্যার মানগুলির জন্য কাজ করে।

f=lambda x:x*(isinstance(x,int)*2.0-1)

2

পার্ল, 33 (শ্বেতস্থান নেই)

sub f{($=)=@_;$=-$_[0]?-$=:"$=.1"}

সম্পাদনা:

  • $=.".1"সংক্ষিপ্ত "$=.1"(ধন্যবাদ অর্ডনিউ)

গণিত:

ম্যাথ

Ungolfed:

# script.pl
sub f {
  ($=) = @_;   # short for $= = int($_[0]); 
               # "int" is implicit in assignments to $=;
               # ($=) can be prepended by "local" to get
               # the function free of side effects.

  $= - $_[0] ? # short for $= != $_[0], check if input is integer
    -$=        # input is not an integer  
  : $= . ".1"  # input is integer
}  

# Testing
chomp;
$_ = sprintf "f(f($_)) = f(%s) = %s\n", f($_), f(f($_));

উদাহরণ:

perl -p script.pl
7
f(f(7)) = f(7.1) = -7
2
f(f(2)) = f(2.1) = -2
0
f(f(0)) = f(0.1) = 0
-1
f(f(-1)) = f(-1.1) = 1
-10
f(f(-10)) = f(-10.1) = 10
-1.23
f(f(-1.23)) = f(1) = 1.1
3.4
f(f(3.4)) = f(-3) = -3.1
1.0
f(f(1.0)) = f(1.1) = -1

মজবুত সমাধান- ভাসমান পয়েন্ট পরীক্ষার কেসগুলি আপনি অনুমান করতে চান না (তার জন্য বোনাস পয়েন্ট দেওয়া উচিত ছিল!)। এখানে 22 টি sub f{yzxzzc?-$_:x.$_}
অক্ষরে কয়েকটা ক্লিনআপ

1
@ আরডনিউ: ধন্যবাদ তবে আমি একমত নই যে আপনার সমাধানটি একই অ্যালগরিদম ব্যবহার করে। অ্যালগরিদম sub f{yzxzzc?-$_:x.$_}হয় না এটা পরিবর্তনশীল এর মাধ্যমে একটি রাষ্ট্র ব্যবহার করে, রাষ্ট্র বিনামূল্যে $_। এ কারণে, fআর কোনও কাজ নয় (গাণিতিক অর্থে), কারণ বিভিন্ন মান একই রাজ্যের উপর নির্ভর করে একই ইনপুট মানের জন্য সম্ভব (আবহাওয়াতে $_একটি থাকে xবা না)। আমার অ্যালগরিদম কোনও রাজ্য ব্যবহার করে না, তথ্য আউটপুট মানটিতে এনকোড থাকে। সংখ্যাগুলি যোগ করে বাস্তব সংখ্যায় রূপান্তরিত হয় .1। এবং আসল সংখ্যাগুলি সাইন স্যুইচ করে পুনরায় পূর্ণসংখ্যায় রূপান্তরিত হয়।
হাইকো ওবারডিক

আকর্ষণীয়- কোনও প্রয়োগের ক্ষেত্রে প্রাথমিক প্রয়োগের কারণে কোনও রাজ্যের ডেটা ব্যবহার করা হয় না এবং এর কোনও বিশেষ সম্পত্তির কারণে নয় $=?
আরডনিউ

আমি বুঝতে পারি না যে আমি সেই চরটি দিয়ে আমার নিজের প্রয়োজনীয়তাও (যা fসংজ্ঞায়িত করা Q->Q) ব্যর্থ হয়েছি x। এছাড়াও $=.".1"সংক্ষিপ্ত করা যেতে পারে"$=.1"
আর্দনিউ

@ অর্ডনিউ: এর বিশেষ সম্পত্তিটি $=কেবলমাত্র পূর্ণসংখ্যার সংখ্যা নেয়। একই একজন সাধারণ পরিবর্তনশীল ব্যবহার করে অর্জন করা যেতে পারে: $a=int$_[0]। তবে এতে ফাংশনের কারণে অতিরিক্ত তিনটি বাইট খরচ হয় int
হাইকো ওবারডিক

2

জুলিয়া, 26

julia> f(n::Int)=n//1
f (generic function with 1 method)
julia> f(n)=int(-n)
f (generic function with 2 methods)
julia> f(f(4))
-4

সুপার প্রতিযোগিতামূলক নয়, তবে খুব জুলিয়ান যেহেতু এটি একাধিক প্রেরণের উপর নির্ভর করে। এটি কেবলমাত্র যুক্তিযুক্ত যদি এটি কোনও আন্ত হয়, বা কোনও বিয়োগ চিহ্ন সহ একটি int এটি অন্য কিছু হয়। এটি আপত্তি জানাতে পারে যে এটি 2 টি ফাংশন, তবে জুলিয়া এটিকে দুটি পদ্ধতির সাথে একটি ফাংশন হিসাবে বিবেচনা করে, এবং এটি যদি কোনও ধরণের আইটেমের সাথে স্ট্যাটমেন্ট দিয়ে একটি ফাংশন সংজ্ঞায়নের সমতুল্য হয় n


এটি কোনও গণিতবিদ কোনও ফাংশন বলবেন না: জুলিয়ায় 3==3//1ফিরে আসে trueতবে f(3//1)==f(3)ফিরে আসে false
ওমর

2

ক্যান্ডি , 20 18 বাইট

3 -> 4 -> -3 -> -4 -> 3 টি কৌশল ব্যবহার করে।

~A2%{|m}1A0>{+|-}.

অনুরোধ করতে এটি দোভাষীর উপর -i সুইচ ব্যবহার করুন

দ্বৈত আহ্বানের উদাহরণ:

$ candy -i 7 -e '~A2%{|m}1A0>{+|-}.'
program length: 18
>>> 8
$ candy -i 8 -e '~A2%{|m}1A0>{+|-}.'
program length: 18
>>> -7
$ candy -i -7 -e '~A2%{|m}1A0>{+|-}.'
program length: 18
>>> -8
$ candy -i -8 -e '~A2%{|m}1A0>{+|-}.'
program length: 18
>>> 7

দীর্ঘ ফর্ম:

peekA
pushA
digit2
mod          # even/odd
if
else
  negate     # negate even numbers
endif
digit1
pushA
digit0
greater      # positive/negative
if
  add        # add two numbers from stack (original stack value, and delta)
else
  sub        # diff two numbers from stack (original stack value, and delta)
endif
retSub

2

ডায়ালগ এপিএল, 9 পয়েন্ট

×-⍨⊢ׯ1*⊢

উত্সটি 9 বাইট দীর্ঘ এবং বোনাসের জন্য যোগ্যতা অর্জন করে (যা কিছুতেই সহায়তা করে না)। এটি শীর্ষ এসও উত্তর থেকে সূত্রটিও ব্যবহার করে।


1

পাইথন: 32 বাইট (29 পয়েন্ট)

চ: জেড -> জেড

f=lambda n:(n>0)-(n<0)-n*(-1)**n

বেন রেখ এর পদ্ধতি ব্যবহার।


পাইথন 2 এ, কয়েকটি বাইট সংরক্ষণ করতে আপনি এর (n>0)-(n<0)সাথে প্রতিস্থাপন করতে পারেন cmp(n,0)। (তবে পাইথন 3 এ নয়: ডকস.পিথন.আর.৩ / ৩ / ওয়াটসনেউ / ৩.০.এইচটিএমএল#ordering-comparisons )
mathmandan


1

জাভা, 113 বাইট

পদ্ধতিটি বেশ সহজ। এটি আমার প্রত্যাশার চেয়ে বেশি বাইটস শেষ হয়েছিল, তবে সম্ভবত কিছুটা গল্ফ করা যেতে পারে।

public class F{public static int f(int x){if(x<0)x+=-2147483647-++x;x+=1073741824;return x<0?-2147483647-++x:x;}

এটি মূলত x এর 4 টি পৃথক "অঞ্চল" তৈরি করে, জাভা আনন্দের সাথে ভেরিয়েবলকে চারপাশে মোড়কে দেয় এই বিষয়টি ব্যবহার করে। নেতিবাচক সংখ্যার জন্য আমাকে কিছু কৌশলগত রূপান্তর করতে হয়েছিল যা এটি প্রত্যাশার চেয়ে বড় হয়ে যাওয়ার মূল কারণ।

-2147483648 ছাড়াও সমস্ত এক্সের জন্য কাজ করে।


1

গল্ফস্ক্রিপ্ট উত্তর হিসাবে সংখ্যার একই ক্রম (3, 4, -3, -4, 3 ...), তবে পার্লে প্রয়োগ করা হয়েছে (সাদা স্থানের পরে 42 টি অক্ষর)

sub f{($_[0]%2?1:-1)*$_[0]+($_[0]<0?-1:1)}

আরও সুস্পষ্টভাবে:

sub f { ($_[0] % 2 ? $_[0] : -$_[0] ) + ( $_[0] < 0 ? -1 : 1 ) }

বা আরও সুস্পষ্টভাবে:

sub f {
  my $n = shift;
  my $sign = $n >= 0 ? 1 : -1;
  # note that in perl $n % 2 is the same as int($n) % 2
  if( $n % 2 ) {
    # odd: add one to magnitude
    return $n + $sign
  } else {
    # even: subtract one from magnitude then invert
    return -($n - $sign)
  }
}

আউটপুট:

ski@anito:~/mysrc/.../acme$ echo 3 | perl -e 'sub f{($_[0]%2?1:-1)*$_[0] + ($_[0]<0?-1:1)}; my $x = <>; for(0..10) { print "$_: $x\n"; $x = f($x); }'
0: 3
1: 4
2: -3
3: -4
4: 3
5: 4
6: -3
7: -4
8: 3
9: 4
10: -3

উপরোক্তগুলি অ-পূর্ণসংখ্যাগুলির জন্যও কাজ করে: স্কি @ অ্যানিটো: ~ / mysrc /.../ acme $ প্রতিধ্বনি 1.1234 | perl -e 'সাব এফ {($ _ [0]% 2? 1: -1) * $ _ [0] + ($ _ [0] <0? -1: 1)}; আমার $ x = <>; (0..4) এর জন্য {"$ _: $ x \ n" মুদ্রণ করুন; $ x = f ($ x); 0 '0: 1.1234 1: 2.1234 2: -1.1234 3: -2.1234 4: 1.1234
স্কিবিরিয়ানস্কি

1

সেড, 25 বাইট।

|sed s/0+/0-/|sed s/^/0+/

ব্যবহার:

$ echo 1.23 |sed s/0+/0-/|sed s/^/0+/
0+1.23
$ echo 0+1.23 |sed s/0+/0-/|sed s/^/0+/
0+0-1.23

1

মতলব, 26 টি অক্ষর

f=@(n) (n<0)-(n<0)-n*(-1)^n

2
এটি কোনও বৈধ উত্তর নয়, কারণ ফাংশনের ডোমেন এবং কোডোমেন অবশ্যই জটিল হবে না।
Wrzlprmft

উহু, আমি দুঃখিত ... আমি শুধু শিরোনাম পড়া এবং ছিল না সতর্কতা অবলম্বন ... দেখা যাক যদি আমি এই কিছুটা সম্পাদনা করতে পারেন
bla

1

সি ++ - 63 55.8

কোডটি এইভাবে দেখায়:

int f(int n){return (n&45056?n^45056:n|45056)*(n&45056?-1:1);}

এটি পূর্ণসংখ্যার উপর কাজ করে না যার চতুর্থ বাইট 0xB এর সমান কারণ এটি পাসের ট্র্যাক রাখতে সেই মানটি ব্যবহার করে। অন্যথায় জেডের যে কোনও সদস্যের সাথে শূন্য সহ কাজ করে।


আপনি এই এক ব্যাখ্যা করতে পারেন? প্রথম পরিদর্শন করার সময় দেখে মনে হচ্ছে আপনি fএকটি স্থির ভেরিয়েবলের সাথে কলগুলির পাল্টা রাখছেন । তবে এর মানে কী sqrt?
আর্দনিউ

আমি প্রশ্নটি ভুল বুঝেছি বলে মনে হচ্ছে; ভেবেছিলেন যে একটি স্ট্যাটিক ভেরিয়েবল ঠিক আছে কারণ সি ++ একটি স্ট্যাক-ওরিয়েন্টেড ভাষা, তবে আমি কোডটি ঠিক করব fix অন্যথায় sqrtটাইপ কাস্টিংয়ের সাথে এটি কেন যেন বৃত্তাকার হয়ে যায় তবে আমার কেন প্রয়োজন তা আমি জানি না। আমি এটি রিফ্যাক্টর করব যাতে এটি স্ট্যাটিক ভেরিয়েবল ছাড়া কাজ করে।
Darkgamma

আপনি কোথা 55.8থেকে পেয়েছেন আমার কোনও ধারণা নেই তবে আপনার বর্তমান কোডটি 62 বাইট দীর্ঘ। সম্পাদনা: কিছু মনে করবেন না, আমি প্রশ্নটি সঠিকভাবে পড়িনি।
nyuszika7h

দুর্ভাগ্যক্রমে চতুর্থ বাইট 0xB এর সমান হতে পারে না এমন সীমাবদ্ধতা এটিকে চ্যালেঞ্জের বৈধ উত্তর হিসাবে পরিণত করে না, যার জন্য এটি অন্তত সমস্ত সংখ্যায় কাজ করা দরকার।
পিপ্পারি

1

সিনথেটিকা ​​দ্বারা সরবরাহিত ক্রিয়াকলাপের সাথে আপডেট হয়েছে (স্পষ্টতই যাকে এখনই এর জন্য creditণ দেওয়া উচিত)

ভাষা: পাইথন

অক্ষরের সংখ্যা: 41 সাদা স্থান সহ

f=lambda x:-float(x) if str(x)==x else`x`

আপনি যে ভাষাটি অক্ষর গণনা সরবরাহ করেছেন সেটির নামও সরবরাহ করুন।
প্রোগ্রামফক্স

আমি পছন্দ করি এটি কীভাবে অ-পূর্ণসংখ্যার সাথে কাজ করে। সাবাশ. :)
সিজেফুরে

f=lambda x:-float(x) if str(x)==x else`x`বেশ খাটো বিট হয়: 41 হোয়াইটস্পেস সহ
ɐɔıʇǝɥʇuʎs

থ্যাঙ্কস সিনথেটিকা, আমি ব্যাকটিক্স ট্রিক সম্পর্কেও জানতাম না! : ডি
হলিস্কুইরেল

পূর্ণসংখ্যার উপর fএকটি স্ট্রিং প্রদান করে; স্পেসিফিকেশন বলছে এটি অবশ্যই একটি যুক্তিসঙ্গত সংখ্যা প্রদান করতে হবে।
ওমর

1

প্রোলোগ, 36 বাইট

কোড:

X*Y:-X//1=:=X,Y is 0.5+X;Y is 0.5-X.

ব্যাখ্যা:

Dyadic predicate which converts integers to floats and floats back to negated integers.

উদাহরণ:

10*X.
X = 10.5

10*Y,Y*X.
X = -10,
Y = 10.5


1

মাউস -2002 , 21 19 12 বাইট

$A1%[1%_|1%]

একটি ফাংশন সংজ্ঞায়িত A; এটির মতো কল করুন #A,#A,?;;(যা ব্যবহারকারী কোনও নম্বর প্রবেশের জন্য অপেক্ষা করবে)। বিকল্পভাবে, এটির মতো কল করুন #A,#A,n;;যেখানে nকোনও নম্বর রয়েছে।


1

জুলিয়া, 21

f(x)=(1-2(1>x>-1))/2x

তারপর

julia> f(f(12//1))
-12//1

পি // কিউ হল যৌক্তিক সংখ্যার জুলিয়ার আক্ষরিক স্বরলিপি।

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