একটি ফাংশন লিখুন যা আপনাকে জানায় এর এর কোনটি লাইন সরানো হয়েছে


28

একটি ফাংশন লিখুন যাতে পাঁচটি লাইন থাকে।

আপনি যদি ফাংশনটি যেমনটি চালনা করেন তবে এটি 0 এ ফিরে আসা উচিত।

আপনি যদি পাঁচটি লাইনের কোনও একটি সরিয়ে ফাংশনটি পরিচালনা করেন তবে এটি আপনাকে বলবে যে কোনটি লাইন সরানো হয়েছে (উদাহরণস্বরূপ, আপনি যদি চূড়ান্ত লাইনটি সরিয়ে ফেলেন তবে এটি 5 ফিরে আসবে)।

ব্রেভিটি, অভিনবত্ব এবং কমনীয়তা বিবেচনার দাবি রাখে। সর্বাধিক আপভোটেড সমাধান (যুক্তিসঙ্গত সময়ের পরে) জয়ী হয়।


4
ফাংশন একটি পরামিতি নিতে পারেন?
জেরেমি

6
যদি আমরা সেই ধরণের ভাষা ব্যবহার করতে চাই তবে ফাংশন ঘোষণাকে কোনও লাইন হিসাবে গণনা করা হয়, বা কেবলমাত্র দেহটিকেই গণনা করা হয়?
meiamsome

1
এছাড়াও, আমাদের লাইনগুলিকে কি 1, 2, 3, 4, 5 নম্বর দেওয়া দরকার বা কোনও নম্বর স্কিম অনুমোদিত?
meiamsome

@ জেরেমি, হ্যাঁ, ঠিক আছে।
jawns317

@ মিয়ামসোম, কেবলমাত্র দেহ গণনা করা হয় এবং প্রত্যাবর্তনের মানগুলির উদ্দেশ্যে লাইনগুলি 1, 2, 3, 4, 5 নম্বরযুক্ত হওয়া উচিত।
jawns317

উত্তর:


18

চুনি

এটি যেকোন গল্ফ নয় বলে ম্যাজিক নম্বরগুলি সন্ধান করছে।

def f
  r=2^3^4^5
  defined?(r) ? r^=2 : r=1^3^4^5
  r^=3
  r^=4
  r^=5
end

প্রতিটি লাইন তার নিজস্ব নম্বর বাদ দেয় 1^2^3^4^5। এটি রুবি, সুতরাং শেষ লাইনটি ফেরতের মান নির্ধারণ করে।


13

জাভাস্ক্রিপ্ট ( 134   77   69   65   60 চর)

→ লাইভ ডেমো ←

function(n){
a=n-=1
n-=2
+3
+4;if(this.a)return 5
return n;var a
}

এই ফাংশনটিকে এন = 10 দিয়ে কল করুন।

  • যদি কোনও লাইন অনুপস্থিত থাকে তবে লাইন 5 রিটার্ন করবে এন == 0।
  • যদি লাইন 1 অনুপস্থিত থাকে তবে লাইন 5 টি n == 1 প্রদান করে।
  • যদি লাইন 2 অনুপস্থিত থাকে তবে লাইন 5 রিটার্ন দেয় n == 2।
  • যদি লাইন 3 অনুপস্থিত থাকে তবে লাইন 5 রিটার্ন করে n == 3।
  • যদি লাইন 4 অনুপস্থিত থাকে তবে লাইন 5 টি n == 4 প্রদান করে।
  • যদি লাইন 5 অনুপস্থিত থাকে, তবে var "a" গ্লোবাল হয়ে যায় এবং লাইন 4 এটি "5" ফিরিয়ে দিতে সনাক্ত করে।
  • যদি লাইন 5 উপস্থিত থাকে, জেএস ইঞ্জিনটি "ভেরিয়েবল উত্তোলন" সম্পাদন করে, "ক" একটি স্থানীয় ভেরিয়ায় পরিণত হয় এবং লাইন 4 "5" ফেরায় না।



পূর্বের সংস্করণসমূহ:

65 অক্ষর

function(n){
a=n-=1
n-=2
+3
+4;if(this.a)return 5
n-=5;return n;var a
}

(অবশ্যই এন = 15 দিয়ে কল করা উচিত)

69 অক্ষর

function(n){
n-=1
n-=2
n-=3
a=n-=4;if(this.a)return 5
n-=5;return n;var a
}

(অবশ্যই এন = 15 দিয়ে কল করা উচিত)

77 অক্ষর

function(){
a=
b=
c=
d=1;if(this.a)return 5
1;var a,b,c,d;return d?c?b?a?0:1:2:3:4
}

134 অক্ষর

function w(){
a=1;e=1;if(this.e)return 5
b=1;if(!a)return 1
c=1;if(!b)return 2
d=1;if(!c)return 3
var a,b,c,d,e;return d?0:4
}

অ golfed

  function whichlineisremoved(){
    /* 1 */ var a = 1; e = 1; if(window.e) return 5;
    /* 2 */ var b = 1, a; if(!a) return 1;
    /* 3 */ var c = 1, b; if(!b) return 2;
    /* 4 */ var d = 1, c; if(!c) return 3;
    /* 5 */ var e = 1, d; if(!d) return 4; return 0;
  }

ঠিক কি var aপরে returnকি করে? তত্ত্বগতভাবে, এটি পৌঁছানো উচিত নয়।
ব্র্যাডেন সেরা

@ বি 1 কে মিউজিক, আসলে জাভাস্ক্রিপ্ট ভেরিয়েবল উত্তোলন নামক কোনও কিছুর কারণে এটি "পৌঁছেছে"। যখন জেএস "সংকলিত" হয়, সমস্ত "ভার" ঘোষণাগুলি কার্যত যে কার্যগুলিতে হয় তার শুরুতে কার্যত স্থাপন করা হয়।
xem

হুম, এটা অদ্ভুত। ভাষাতে এটির জন্য ব্যবহারিক ব্যবহার রয়েছে, বা এটি নিখুঁতভাবে গল্ফ / শোষণ করছে? মজিলার ডকুমেন্টেশনে ভেরিয়েবল উঠানোর বিষয়ে কিছুই পড়ার কথা মনে পড়ছে না।
ব্র্যাডেন সেরা

এটি একটি জেএস বৈশিষ্ট্য। এখানে বর্ণিত: ডেভেলপার.মোজিলা.আর.ইন-
xem

আহ, তাই এটি গল্ফিংয়ের জন্য আরও বেশি কাজে লাগাচ্ছে।
ব্র্যাডেন সেরা

6

পাইথন

যদি প্যারামিটারগুলি অনুমোদিত হয়, তবে এটি কাজ করবে:

def f(n=10):
    n -= 1
    n -= 2
    n -= 3
    if n == 4: return 0 if f(7) else 5
    return n - 4 or 4

4

আর

f <- function() {
  T <- FALSE
  F <- TRUE
  month.abb <- TRUE
  (pi <- 5)
  T + (!F) * 2 + (!isTRUE(month.abb)) * 3 + (pi != 5) * 4
}

ফাংশনটি অন্তর্নির্মিত "ধ্রুবকগুলি" ব্যবহার করে এবং তাদের প্রত্যেককেই অন্য একটি মান নির্ধারণ করে। যদি এই ভেরিয়েবলগুলির সমস্ত নতুন মানের সমান হয় তবে ফাংশনটি 0 প্রদান করে Log চতুর্থ লাইনের চারপাশের বন্ধনীগুলি দৃশ্যমানভাবে তার ফলাফলটি ফিরে আসতে দেয় (যদি এটি শেষ আদেশ হয়)।


3

লুয়া 5.2+

নিউলাইনগুলি বাদ দিয়ে ফাংশন বডির 55 টি অক্ষর। আমি এর চেয়ে ভাল আর কিছু করতে পারলাম না:

function f()
return 7--[[
return 1--[=[]]-2
--[[
-2--[=[]]
-5--]=]--]]-1
end

মন্তব্যের অপব্যবহারের জন্য অতিরিক্ত পয়েন্ট পাওয়ার আশায়: পি

5.1-তে এটি কাজ না করার কারণটি হল যে নেস্টেড [[]]অপসারণ করা হয়েছিল এবং 5.1-এ এটি 5.2-এর মতো উপেক্ষা করার পরিবর্তে একটি সংকলন ত্রুটি দেয়।

  • যদি লাইনগুলির কোনওটি অপসারণ না করা হয় তবে ক্রিয়াকলাপটি বর্ধনশীল return 7-2-5
  • যদি প্রথম লাইনটি সরানো হয়, return 1
  • যদি দ্বিতীয়, return 7-5
  • তৃতীয় হলে, return 7-2-2
  • যদি চতুর্থ, return 7-2-1
  • পঞ্চম হলে, return 7-2

2

চুনি

আমি বিটওয়াইজ অপারেশন দিয়ে এটি করার চেষ্টা করেছি এবং তখন আমি বুঝতে পারি যে তালিকাগুলি ব্যবহার করে আরও সহজ সমাধান রয়েছে! এই চ্যালেঞ্জটি এমন একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ দ্বারা সর্বোত্তমভাবে পরিবেশন করা হয়েছে যা রুবি এর মতো দেখা শেষ মানটি স্বয়ংক্রিয়ভাবে ফিরিয়ে দেয়।

def tellMe(x=[1,2,3,4,5])
    x.delete(1)
    x.delete(2)
    x.delete(3)
    x.delete(4);x[0]
    x.delete(5);x==[]?0:x[0]
end

2

বেফুঞ্জের সুস্পষ্ট ফাংশন নেই, তবে এখানে আমি বেফুঞ্জে একটি ফাংশন বলব:

v^    <
>v
1>v
 2>v
##3>5v
$0v4 >
>>>>>>^

প্রথম এবং শেষ লাইনগুলি ফাংশন শুরু এবং ফাংশন শেষ। এটি "রিটার্ন" এর নিকটতম জিনিসটি করে, এটি স্ট্যাকের উপরে সঠিক মানকে ঠেলে দেয়।


1

নতুন উত্তর

আমি আর একটি সমাধান খুঁজে পেলাম। এটি খুব খারাপ, আমি গণিতটি খুব পছন্দ করি। এই সমাধানটি পুনরুক্তি এবং গ্লোবাল ভেরিয়েবল (ইয়াক!) ব্যবহার করে প্রতিটি লাইন চালিত হয়েছে কিনা তা জানাতে। আমি অন্যান্য সমাধানগুলি থেকে আলাদা কিছু করতে চেয়েছিলাম, সুতরাং এটি খুব মার্জিত নয়, তবে এটি সঠিকভাবে কাজ করে :)

পিএইচপি

function LOL($a) {
    if (!$a) { LOL(true); if (!$GLOBALS['b']) return 2; if (!$GLOBALS['c']) return 3; if (!$GLOBALS['d']) return 4; if (!$GLOBALS['e']) return 5; return 0; } 
    if ($a) $GLOBALS['b'] = true; else return 1;
    $GLOBALS['c'] = true;
    $GLOBALS['d'] = true;
    $GLOBALS['e'] = true;
}

আমি সত্যিই এই চ্যালেঞ্জ উপভোগ করেছি, আপনাকে ধন্যবাদ! :)


পুরানো উত্তর

আমি গণিত ব্যবহার করে এটি সমাধান করেছি। যদি প্রতিটি ভেরিয়েবল অজানা হিসাবে দেখা হয় এবং আমরা প্রতি লাইনে একটি ঘোষণা করে থাকি, সেখানে পাঁচটি অজানা এবং কোডের পাঁচটি লাইন থাকে: এটি আমাদের নীচের 5x5 সিস্টেমে নিয়ে যায়:

b+c+d+e = 1;
a+c+d+e = 2;
a+b+d+e = 3;
a+b+c+e = 4;
a+b+c+d = 5;
//Solutions are displayed in the code below.

আমি যখন মানগুলি খুঁজে পেয়েছি, তখন আমি সেগুলিকে হার্ডকড করে কিছু বেসিক স্টাফ যুক্ত করেছি।

পিএইচপি

function LOL(){
    $a = 2.75;
    $b = 1.75;
    $c = 0.75;
    $d = -0.25; if ($a+$b+$c+$d == 5) return $a+$b+$c+$d;
    $e = -1.25; return $a+$b+$c+$d+$e;
}

দ্রষ্টব্য: পুরানো উত্তর যেমনটি রেখে দেওয়া হয় তা কাজ করবে না।


আমি লিনিয়ার সমীকরণের আইডিয়াটি পছন্দ করি।
এমএল

1

মোম , 86 বাইট

আমার প্রথম উদ্ভাবিত এসোলাং চেষ্টা করে দেখছি। প্রাথমিক বিভ্রান্তির পরে আমি দেখতে পেলাম যে সমাধানটি এত সহজ।

_1 p
_^v>~2+p
   >   >~3+p
       >   >~4+X@7~8+~@$^^{;
           >    >~5+@7~8+~@${;

ব্যাখ্যা:

বীস মোম প্রোগ্রামগুলি 2D ষড়জাগ্রীয় গ্রিডে কাজ করে। প্রোগ্রামগুলি একটি আয়তক্ষেত্রাকার বিন্যাসে সংরক্ষণ করা হয়।

    a — b — c — d
   / \ / \ / \ /
  e — f — g — h
 / \ / \ / \ /
i — j — k — l

হিসাবে সংরক্ষণ করা হয়

abcd
efgh
ijkl

নির্দিষ্ট দিকগুলিতে যাওয়ার জন্য নির্দেশাবলী হ'ল:

    b — d 
   / \ / \                                  bd
  < —IP — >    or in compact form (β=IP):   <β>
   \ / \ /                                   pq
    p — q

সংক্ষিপ্ত ব্যাখ্যা

_1 p একটি আইপি তৈরি করুন, 1 যুক্ত করুন, তারপরে আইপিকে লাইন 2 এ পুনঃনির্দেশ করুন

_^v>~2+p অন্য আইপি তৈরি করুন, লাইন 1 এর ক্ষেত্রে কেবল অনুপস্থিত রয়েছে, আইপিটি এক লাইন থেকে এগিয়ে রয়েছে তা নিশ্চিত করতে আইপি ধীর করুন, তারপরে 2 যোগ করুন, তারপরে লাইন 3 এ পুনঃনির্দেশ করুন

> >~3+p 3 যোগ করুন, তারপরে লাইন 4 এ পুনর্নির্দেশ করুন

> >~4+X@7~8+~@$^^{; 4 যোগ করুন, তারপরে দ্বিতীয় lstack মান 15 এ সেট করুন, তারপরে XOR lstack শীর্ষ এবং 2 য় মানের, আইপি ধীরে ধীরে (5 লাইনে আইপি এগিয়ে রয়েছে তা নিশ্চিত করতে, লাইন 5 উপস্থিত থাকলে) এবং ফলাফল আউটপুট করুন, তারপরে প্রোগ্রামটি সমাপ্ত করুন।

> >~5+@7~8+~@${; 5 যোগ করুন, তারপরে ধীর গতি বাদ দিয়ে 4 লাইনের মতোই করুন।

মূলত প্রোগ্রামটি কেবল একটি যোগফল 15 গণনা করে

  • প্রোগ্রাম অটুট: (1 + 2 + 3 + 4 + 5) xor 15 = 0
  • লাইন 1 অনুপস্থিত: (2 + 3 + 4 + 5) xor 15 = 1
  • লাইন 2 অনুপস্থিত: (1 + 3 + 4 + 5) xor 15 = 2
  • লাইন 3 অনুপস্থিত: (1 + 2 + 4 + 5) xor 15 = 3
  • লাইন 4 অনুপস্থিত: (1 + 2 + 3 + 5) xor 15 = 4
  • লাইন 5 অনুপস্থিত: (1 + 2 + 3 + 4) xor 15 = 5

>3 থেকে 5 লাইনে অতিরিক্ত কেবল গ্যারান্টি দেয় যে 2 থেকে 4 লাইনগুলির একটি যদি অনুপস্থিত থাকে, আইপি এখনও সঠিকভাবে পুনঃনির্দেশিত হয় এবং প্রোগ্রামটি ছেড়ে যায় না।

আপনি আমার গিটহাবের সংগ্রহশালা থেকে জুলিয়ায় লেখা আমার মোমের মোড়ক অনুবাদককে ক্লোন করতে পারেন

গিটহাবের রিডমিটি এএসএল্যাংস পৃষ্ঠার চেয়ে আরও আধুনিক ও আধুনিক কাঠামোগত।



0

সাধারণ এলআইএসপি:

(defun which-line-is-removed (&aux (x 30)) 
  (decf x 2)
  (decf x 4)
  (decf x 8)
  (decf x 16) 5
  (if (zerop x) 0 (log x 2))
)

এনবি: নিজস্ব লাইনে শেষ বন্ধনী রাখা খারাপ স্টাইল হিসাবে বিবেচিত হয়, তবে যেহেতু অন্যান্য ভাষাগুলি রয়েছে endএবং }আমি ধরে নিয়েছি এটি অনুমোদিত allowed


0

বাশ, ১৩১ টি চর

#!/bin/bash

# the function:
function f(){
  a=1;
  b=2;
  c=3;
  d=4;[ ! $1 ]&&f 1&&return 5||true
  [ $1 ]&&return 6;e=5;s=$((a+b+c+d+e));return $((15-$s))
}

# call it:
f
# report the result:
echo Removed line $?

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

(দ্রষ্টব্য: ফাংশন ব্যতীত অন্য কিছু ছড়িয়ে দিলে, সাদা জায়গা খালি করা হয় / / বিন / বাশকে / বিন / শিতে পরিবর্তন করা হয় তবে এটি ন্যূনতম ১৩১ টি অক্ষরে নেমে আসে)


0

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

function(){
/*aa*/if(arguments.callee.toString().indexOf("*"+"a".repeat(6)+"*")==-1)return 5;
/*aaa*/if(arguments.callee.toString().indexOf("*"+"a".repeat(5)+"*")==-1)return 4;
/*aaaa*/if(arguments.callee.toString().indexOf("*"+"a".repeat(3)+"*")==-1)return 2;
/*aaaaa*/if(arguments.callee.toString().indexOf("*"+"a".repeat(4)+"*")==-1)return 3;
/*aaaaaa*/return +!~arguments.callee.toString().indexOf("*"+"a".repeat(2)+"*");
};
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.