f (g (x)) হ্রাস পায় যখন g (f (x)) বৃদ্ধি পায়


42

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

দয়া করে f এবং g এর একটি সংক্ষিপ্ত বিবরণ এবং কেন তাদের প্রয়োজনীয় সম্পত্তি আছে তার একটি যুক্তি অন্তর্ভুক্ত করুন ।

ক্রেডিট: এই চ্যালেঞ্জটি ২০১১ সালের রোমানিয়ান মাস্টার অফ ম্যাথমেটিক্স প্রতিযোগিতার একটি সমস্যা দ্বারা অনুপ্রাণিত হয়েছিল (যা একই বিষয় জিজ্ঞাসা করে তবে সংখ্যার পরিবর্তে বাস্তব সংখ্যাগুলিতে)। আপনি যদি সত্যই স্পলারদের চান তবে আপনি এখন কী কী অনুসন্ধান করবেন তা জানেন।

বিধি

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

  • মনে রাখবেন যে ফাংশনগুলি অজ্ঞাতনাম হতে পারে , যতক্ষণ না তাদের নাম নিজের দ্বারা বা অন্য কোনও ফাংশন দ্বারা সংজ্ঞায়িত করা আপনার প্রয়োজন হয় না। যদি আপনি একটি বা উভয় ফাংশনটির নাম দেন, আপনি ধরে নিতে পারেন যে সেগুলি একই প্রোগ্রামে রয়েছে, যাতে তারা তাদের প্রয়োগের ক্ষেত্রে একে অপরকে উল্লেখ করতে পারে (যেমন def f(x): return -g(x)পাইথনে)।

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

  • আপনি যে কোনও প্রোগ্রামিং ভাষা ব্যবহার করতে পারেন তবে নোট করুন যে এই ফাঁকগুলি ডিফল্টরূপে নিষিদ্ধ করা হয়েছে।

  • এটি , সুতরাং আপনার স্কোর হ'ল উভয় ফাংশনের বাইট সংখ্যা এবং সংক্ষিপ্ত বৈধ উত্তর জয়ের সমষ্টি ।


ফাংশন একটি স্ট্রিং ফিরে আসতে পারে?
ম্যাথু রোহ

@ সিআইজিএসইজিভি আমি হ্যাঁ বলব, তবে কেবলমাত্র তারা যদি ইনপুট হিসাবে কোনও স্ট্রিং নেয় তবে কোনও ধরণের রূপান্তর .োকানো ছাড়াই এগুলি রচনা করা যায়।
মার্টিন এন্ডার

আসলে, আমি অন্য ফাংশনটিকে আরও ফলাফল সম্পাদনা করতে অক্ষম করার জন্য স্ট্রিংয়ে রূপান্তর করার চেষ্টা করেছি।
ম্যাথু রোহ

1
@ ফ্যাটালাইজ সঠিক প্রতিটি অবশ্যই ℤ → ℤ টাইপের একটি ফাংশন হতে হবে ℤ
মার্টিন এন্ডার

1
@ বিজন ইতিবাচক এবং নেতিবাচক উভয়ই।
মার্টিন এেন্ডার

উত্তর:


18

পাইথন, 68 টি অক্ষর

f=lambda x:(1-x%2*2)*(2*x*x+(x<0))
g=lambda x:(1-x%2*2)*(2*x*x+(x>0))

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

জি একই কাজ করে, এটি বাদে এটি সংখ্যার নেতিবাচক সংখ্যা এবং বিজোড় সংখ্যায় ধনাত্মক সংখ্যার মানচিত্র করে।

চ ∘ জি মানচিত্র নেতিবাচক → এমনকি → ধনাত্মক এবং ধনাত্মক → বিজোড় → নেতিবাচক।
g ∘ f মানচিত্র নেতিবাচক → বিজোড় → নেতিবাচক এবং ধনাত্মক → এমনকি → ধনাত্মক।

সুতরাং চ এবং জি এর পছন্দসই বৈশিষ্ট্য রয়েছে।


2
fএবং gনামবিহীন ফাংশন হতে পারে, যাতে আপনি চার বাইট বাদ দিতে পারেন।
মার্টিন এন্ডার

(1-x%2*2)কয়েকটি বাইট সংরক্ষণ করতে আপনি ভেরিয়েবল হিসাবে সংজ্ঞায়িত করতে পারেন ।
OldBunny2800

এখানে খেলার জন্য একটি সম্পূর্ণ কোড এখানে import numpy as np; import matplotlib.pyplot as plt; xrange=np.arange(-3,4); f=lambda x:(1-x%2*2)*(2*x*x+(x<0)); g=lambda x:(1-x%2*2)*(2*x*x+(x>0)); plt.plot(xrange, map(f, xrange), 'ro'); plt.plot(xrange, map(g, xrange), 'go'); plt.plot(xrange, map(f, map(g, xrange)), 'b--'); plt.plot(xrange, map(g, map(f, xrange)), 'y--'); plt.show(); আপনি ;পঠনযোগ্যতার জন্য লাইনফিডগুলির সাথে প্রতিস্থাপন করতে পারেন ।
স্টাফেন গৌরিচন

16

পাইথন , 40 বাইট

f=lambda x:x*(-1)**x
g=lambda x:3*f(x)+1

এটি অনলাইন চেষ্টা করুন! কিছু আউটপুটগুলি এমন ফ্লোট হয় যা সমান সমান সংখ্যক কারণ (-1)**(-3)উদাহরণস্বরূপ একটি ভাসা দেয়।

পিটার টেলর থেকে ধারণাগুলি ভিত্তিক । ফাংশনটি fবিজোড় সংখ্যাগুলিকে অগ্রাহ্য করে এবং এমনকি অপরিবর্তিত রেখে দেয়। ফাংশনটি gএকই কাজ করে, তারপরে মনোটোনিক প্যারিটি-স্যুইচিং মানচিত্রটি প্রয়োগ করে x -> 3*x + 1

যেহেতু f(f(x)) = x, আমরা g(f(x)) = 3*f(f(x))+1 = 3*x+1বাড়ছে।

কারণ f(g(x)) = f(3*f(x)+1), ধারণাটি হ'ল অভ্যন্তরীণ এবং বাহ্যিক fউল্টানো চিহ্নগুলির মধ্যে একটি হ'ল এটি কমেছে।

  • এমনকি x, f(x) = xকিন্তু f(3*x+1) = -3*x-1কারণ 3*x+1বিজোড় হয়।
  • বিজোড় জন্য x, f(x) = -xএবং f(-3*x+1) = -3*x+1কারণ -3*x+1এমনকি হল।

আমাদের এখন কেবলমাত্র হ্রাসমান পথে সমান এবং বিজোড় ইনপুটগুলি ইন্টারলিভের প্রয়োজন, যা হ'ল কারণ -3*x±1কীভাবে লক্ষণগুলি নির্বাচন করা হয় তা নির্বিশেষে হ্রাস পাচ্ছে। এজন্য 3*প্রয়োজন হয়।

একটি হাস্কেল বন্দরটি 25 বাইট:

f x=x*(-1)**x
g x=1+3*f x

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


হাস্কেলে, (^)হল পূর্ণসংখ্যা
ব্যবহারকারী1502040

1
@ user1502040 এটি নেতিবাচক উদ্দীপনা পরিচালনা করতে পারে না।
xnor

1
যেহেতু আপনি gনিজেকে কল করছেন না তাই আপনি নামহীন করে দুটি বাইট সংরক্ষণ করতে পারবেন।
মার্টিন এন্ডার

14

সিজেএম (17 বাইট)

ফাংশন চ (নামে Fকারণ CJam শুধুমাত্র উপরের কেস নাম মঞ্জুর করে):

{W1$2b,#*}:F

ফাংশন জি (বেনামে):

{F2*}

অনলাইন ডেমো

এটি সিজেএম এর বাস্তবায়ন বিশদের উপর নির্ভর করে একটি বাইট সংরক্ষণ করে যা তর্কযোগ্যভাবে ত্রুটিযুক্ত: বেস রূপান্তরগুলি করার সময় এটি পরম মান ব্যবহার করে। 2b,সুতরাং তার আর্গুমেন্টের পরম মানের বিটের সংখ্যা দেয়, তাই চ ঠিক সেই সংখ্যাগুলিকে অবহেলা করে যাঁর পরম মানটির বিট সংখ্যা রয়েছে। g প্রয়োগ করে চ এবং তারপরে দ্বিগুণ (বিটের সংখ্যার সমতা পরিবর্তন করা)।

তাই চ আবেদন এবং তারপর ছ পাতার অপরিবর্তিত সাইন ইন করুন এবং দ্বিগুণ ম্যাপিং xকরতে 2x। G প্রয়োগ করা এবং তারপরে এফ চিহ্নটি একবারে ঠিক একবার পরিবর্তন করে এবং দ্বিগুণ হয়, ম্যাপিং xকরে -2x


ভাল লাগল, এটি হ'ল এই প্রতিযোগিতার হ'ল রেফারেন্স সমাধান। (আমি ধরে নিলাম আপনি স্বাধীনভাবে এটি নিয়ে এসেছেন?)
মার্টিন এন্ডার

@ মার্টিনএেন্ডার, আমি এই সমস্যাটি আগে কোথাও দেখেছি। সম্ভবত গণিত.এস.ই.
পিটার টেলর

2

পাইথ, 34 বাইট

এটি আমার পাইথন উত্তরের প্রত্যক্ষ অনুবাদ।

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