আপনার ভাষা * বেশিরভাগ * অকেজো! (কপসের থ্রেড)


61

এই মন্তব্য দ্বারা অনুপ্রাণিত ...

ব্যবহারকারীদের স্টেপ হেন , গম-উইজার্ড এবং ডেনিসকে পোস্ট করার আগে এই চ্যালেঞ্জের বিশদটি আরও দৃ solid় করতে সহায়তা করার জন্য ধন্যবাদ!

এটি কপসের থ্রেড। ডাকাতদের থ্রেডের জন্য, এখানে যান


ইন এই প্রতিদ্বন্দ্বিতা , আপনি কিছু কোড এটা তোলে যাতে আপনার ভাষা আর একটি প্রোগ্রামিং ভাষা হচ্ছে আমাদের মানদণ্ড সন্তুষ্ট চলমান সঙ্গে tasked হয়। সেই চ্যালেঞ্জের মধ্যে, এর অর্থ এটি তৈরি করা যাতে ভাষা আর আর না করে ...

  • সংখ্যার ইনপুট এবং আউটপুট নিন

  • একসাথে দুটি সংখ্যা যুক্ত করুন

  • নির্দিষ্ট সংখ্যাটি মৌলিক কিনা তা পরীক্ষা করুন।

এটি একটি চ্যালেঞ্জ, যেখানে দুটি পৃথক উদ্দেশ্য নিয়ে দুটি পৃথক চ্যালেঞ্জ রয়েছে: কপস এমন কিছু কোড লেখার চেষ্টা করবেন যা ভাষাটিকে বেশিরভাগ অকেজো করে তোলে এবং ডাকাতরা পুলিশকে অনুমতি দেয় এমন লুকানো কাজের সন্ধানের চেষ্টা করবে তাদের ভাষা পুনরুদ্ধার করতে।

একজন পুলিশ হিসাবে আপনাকে অবশ্যই কোডের দুটি স্নিপেট লিখতে হবে:

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

  2. ... কোডের একটি স্নিপেট যা দুটি অ-নেতিবাচক পূর্ণসংখ্যাকে ইনপুট হিসাবে গ্রহণ করে, সেগুলি একসাথে যুক্ত করে, এবং তাদের যোগফল আউটপুট করে। এই স্নিপেটটি অবশ্যই প্রথম স্নিপেট চালানোর পরেও সঠিকভাবে কাজ করবে। যখন দুটি স্নিপেট একসাথে একত্রিত হয়, তাদের অবশ্যই একটি সম্পূর্ণ প্রোগ্রাম তৈরি করতে হবে যা দুটি সংখ্যা যুক্ত করে, বা একটি ফাংশন সংজ্ঞা দেবে যা দুটি সংখ্যা যুক্ত করে। আদর্শভাবে, এই স্নিপেটটি খুব অস্পষ্ট আচরণের উপর নির্ভর করা উচিত, যাতে এটি খুঁজে পাওয়া আরও বেশি কঠিন হয়।

আপনি ইনপুট এবং আউটপুট কোনও মানক পদ্ধতি চয়ন করতে পারেন । তবে আপনাকে অবশ্যই কোন ফর্ম্যাটটি (ইনপুট এবং আউটপুট) ব্যবহার করছেন তা অবশ্যই প্রকাশ করতে হবে। ডাকাত আপনার উত্তর ক্র্যাক করতে পারে না যদি না তারা আপনার মতো একই ফর্ম্যাটটি ব্যবহার করে।

এই দুটি স্নিপেট লেখার পরে, আপনাকে অবশ্যই দ্বিতীয়টি প্রকাশ না করে উত্তর হিসাবে প্রথম পোস্ট করতে হবে। আপনার উত্তরে নিম্নলিখিত সমস্ত তথ্য থাকা উচিত:

  • প্রথম স্নিপেট (স্পষ্টত দ্বিতীয়)।

  • ভাষা (ছোটখাট সংস্করণ সহ, যেহেতু বেশিরভাগ জমাগুলি সম্ভবত অদ্ভুত প্রান্তের ক্ষেত্রে নির্ভর করবে)

  • এটি ফাংশন বা পূর্ণ প্রোগ্রাম কিনা তা সহ আইও ফর্ম্যাট। ডাকাতের আবশ্যক একই বিন্যাস ব্যবহার তাদের ক্র্যাক বৈধ হতে পারে।

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

আপনার উত্তর নিরাপদ না হওয়া পর্যন্ত আপনার বাইট গণনা প্রকাশ করার দরকার নেই।

এখানে একটি উদাহরণ। প্রথম স্নিপেটের জন্য, আপনি নিম্নলিখিত পাইথন 3 প্রোগ্রাম জমা দিতে পারেন:

পাইথন ঘ

print=None

STDIN এবং আউটপুট STDOUT এ ইনপুট নেয়

এবং তারপরে আপনার দ্বিতীয় স্নিপেট হিসাবে আপনি লিখতে পারেন:

import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)

এটি বৈধ কারণ এটি দুটি সংখ্যাকে ইনপুট হিসাবে গ্রহণ করবে এবং আপনি দুটি স্নিপকেটে একসাথে যোগদান করলেও তাদের যোগফল আউটপুট করবে, যেমন

print=None
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)

তবে ডাকাতদের সমাধান খুঁজে পাওয়া এটি অত্যন্ত সহজ হবে easy যেহেতু এটি ক্র্যাক করা খুব সহজ হবে, আপনি এই জাতীয় পদ্ধতির মতো করে প্যাচ করার চেষ্টা করতে পারেন:

import sys
sys.stdout=None
print=None

তবে এটিরও খুব সহজ কাজ রয়েছে:

del print
a,b=int(input()),int(input())
print(a+b)

একজন পুলিশ হিসাবে, আপনার লক্ষ্য লুকানো কাজটিকে যতটা সম্ভব অস্পষ্ট হিসাবে তৈরি করা, ডাকাতদের এটির সন্ধান থেকে রোধ করা।

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

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

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

আনন্দ কর!

বিধি স্পষ্টতা

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

  • আপনার উত্তরটি বৈধ হওয়ার জন্য দ্বিতীয় স্নিপেটটি অবশ্যই কার্যকর করা উচিত । এর অর্থ একটি উত্তর

    import sys
    sys.exit()
    

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

  • সুরক্ষিত থাকার পরে, আপনার স্কোর হ'ল উভয় স্নিপকেটের বাইট গণনা ।

  • এটি আপনার কাজের উত্তরের জন্য প্রয়োজনীয় যে কোনও অদ্ভুত প্রান্তের কেসটি প্রকাশ করুন দয়া করে ফিরে যান ... আপনার জমাতে অবশ্যই প্রকাশিত হওয়ার পরে পুনরুত্পাদনযোগ্য হিসাবে প্রকাশের আগে পর্যাপ্ত তথ্য থাকতে হবে । এর অর্থ হ'ল যদি আপনার উত্তরটি নিরাপদ হয়ে যায় এবং তারপরে আপনি এডিট করেন: আমার উত্তর এখানে। ওহ হ্যাঁ, বিটিডাব্লু এটি কেবল তখনই কাজ করে যদি আপনি সোলারিসে এটি চালান, রসিকতা আপনার উপর! আপনার উত্তরটি অবৈধ এবং মুছে ফেলা হবে এবং জয়ের যোগ্য হিসাবে বিবেচিত হবে না।

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

  • উত্তর জমা দেওয়ার পরে আপনি আপনার কোডটি সম্পাদনা করতে পারবেন না।

  • আপনি এনক্রিপশন, হ্যাশ ফাংশন, সিএসপিআরএনজি ইত্যাদির মতো ক্রিপ্টোগ্রাফিক ফাংশনগুলির উপর নির্ভর করতে পারেন না

সকেটবিহীন জমাগুলি স্নিপেট:


3
সি এর মতো ভাষার জন্য কী করা উচিত? সংঘটন কেবল একটি "প্রধান স্নিপেট" এর জন্য অনুমতি দেয় এবং কোনও যুক্তিই সেখানে যেতে হবে। উদাহরণস্বরূপ, আমার যদি int main(){ do_evil_stuff(); }ব্যবহারকারীদের কোডটি কোথায় যাওয়া উচিত? কোন অনুষ্ঠানে? সব বক্তব্য পরে main?
কনর ও'ব্রায়েন

1
দ্বিতীয় স্নিপেটটি প্রথম স্নিপেটের যে কোনও জায়গায় রাখা যাবে?
LegionMammal978

1
আমি কোডিং সম্পর্কে কিছুই জানি না, তবে এই চ্যালেঞ্জটি আশ্চর্যজনক দেখাচ্ছে,
প্রিট বালাগোপাল

2
আমি জিমি 23013 এর দুর্দান্ত স্নিপেটে সম্পাদনা করেছি । প্রত্যাবর্তন নির্দ্বিধায়, তবে জমাগুলি খুঁজে পেতে আমি নিজেও এটি ব্যবহার করেছিলাম এবং ভেবেছিলাম এটি অন্যকে সহায়তা করতে পারে।
ডোম হেস্টিংস 18

2
@ ডোমহাস্টিংস এটি অত্যন্ত সহায়ক! আপনাকে অনেক ধন্যবাদ :)
ডিজেএমসিএমহেম

উত্তর:


2

গফার্থ 0.7.3 (টিআইও) , 231 বাইট [নিরাপদ]

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

: . ;
: dec. ;
: u. ;
: .r ;
: u.r ;
: d. ;
: ud. ;
: d.r ;
: ud.r ;
: emit ;
: type ;
: + postpone 2drop ;
: ; + + + postpone exit reveal postpone [ ;

ইনপুটটি ফাংশন পরামিতি হিসাবে স্ট্যাকের শীর্ষ থেকে নেওয়া দুটি স্বাক্ষরিত পূর্ণসংখ্যা হবে। STDOUT এ আউটপুট।

সুতরাং আপনার করা ক্ষতিটি ঠিক করতে হবে এবং একটি ফাংশন সংজ্ঞায়িত করতে হবে যা স্ট্যাক থেকে শীর্ষ দুটি মান নিয়ে যায় এবং ফলাফলটি একটি পূর্ণসংখ্যা হিসাবে প্রিন্ট করে (কোনও ফ্লোট নয়) অতিরিক্ত আউটপুট ছাড়াই (কোনও পেছনের স্থান নেই) STDOUT এ ফলাফল প্রিন্ট করে।

আপনার লক্ষ্য ফাংশনটির নাম দেওয়া থাকলে এখানে একটি টেম্পলেট রয়েছেf

সমাধান:

By৯ বাইটস

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

immediate : f s>f s>f f+ f>d swap over dabs <<# #s rot sign #> (type) #>> 0 0 ;

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


1
এটি একটি খুব সুন্দর উত্তর। এই হারে, দেখে মনে হচ্ছে এটি একমাত্র উত্তর বাতিল হওয়া উত্তর হিসাবে শেষ হতে পারে!
ডিজেএমসিএমহেম

:) আমি বিভিন্ন বাধা কয়েক মিলিত। এই মুহুর্তে, আমি ভাবছি যে আমি যদি আমার স্কোরকে আরও উন্নত করতে কেবল একটি একক করতে পারি। তবে এটি সম্ভব যে একের অধিক সংখ্যক থাকার কারণে এটি এখনও অবরুদ্ধ করা হয়নি।
mbomb007

21

হাস্কেল, ক্রিশ্চিয়ান সিভারস দ্বারা ক্র্যাকড

import Prelude(getLine,print)
a=a

সম্পূর্ণ প্রোগ্রাম, স্টিডিন থেকে স্টাডআউট পর্যন্ত দুটি পূর্ণসংখ্যা (নেতিবাচকগুলি সহ) পড়া।

আমি প্রিলেডটি সবেমাত্র অক্ষম করেছি তাই প্রায় কোনও কিছুই সুযোগের মধ্যে নেই, এবং তারপরে একটি সংজ্ঞা যুক্ত করা হয়েছে; আরও আমদানি সিনট্যাক্টিকভাবে অবৈধ। আমি আপনাকে দিয়েছি getLineএবং printযদিও।


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

import Prelude(getLine,print)
a=a
(x:l)!0=x
(x:l)!n=l!d[0..n]
d[x,y]=x
d(x:l)=d l
x^y=[x..]!y
x+y=f[0..y](x^y)(-((-x)^(-y)))
f[]x y=y
f _ x y=x
f.g= \x->f(g x)
f&0= \x->x
f&n=f.(f&d[0..n])
x*y=((+x)&y)0
x%[]=x
x%('-':s)= -(x%s)
x%(c:s)=x*10+i c%s
i c=l['1'..c]
l[]=0
l(x:s)=1+l s
main=do
 x<-getLine
 y<-getLine
 print((0%x)+(0%y))

যা সম্ভবত কোনওভাবেই গল্ফ হয় না তবে এখানে এটি আরও পড়ার মতো:

import Prelude(getLine,print)
a=a

-- List indexing
(x : _) !! 0 = x
(_ : xs) !! n = xs !! (sndLast [0..n])

-- sndLast [0..n] lets us decrement a positive integer
sndLast [x, _] = x
sndLast (_ : xs) = sndLast xs

-- Pseudo-addition: right-operator must be non-negative
x +~ y = [x..] !! y

-- Generalised addition by sign-flipping if y is negative
x + y = switch [0..y] (x +~ y) (-((-x) +~ (-y)))
  where switch [] _ empty = empty   -- [0..y] is null if y is negative
        switch _ nonempty _ = nonempty

f . g = \x -> f (g x)

-- compose a function with itself N times
composeN f 0 = \x -> x
composeN f n = f . (composeN f (sndLast [0..n]))

-- multiplication is chained addition
x * y = composeN (+x) y 0

strToNat acc [] = acc
strToNat acc ('-' : cs) = -(strToNat acc cs)
strToNat acc (c : cs) = strToNat (acc * 10 + charToDigit c) cs

charToDigit c = length ['1'..c]

length [] = 0
length (_ : xs) = 1 + length xs

main = do
  x <- getLine
  y <- getLine
  print (strToNat 0 x + strToNat 0 y)


17

পাইথন 2 , ক্র্যাকড

একটি নামকৃত ফাংশন হিসাবে সংযোজন কার্যকর করে

import sys
c="".join(open(__file__).read().split('\n')[4:])
if set(c)-set(' &)(,.:[]a`cdfijmonrt~')or"import"in c:sys.setrecursionlimit(1)
f=lambda\

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

এটি কি করে?

আপনাকে কিছুটা সাহায্য করার উদ্দেশ্যে, আমি কী করব তা ব্যাখ্যা করব। এই কোডটি উত্স ফাইলটি খোলে এবং কোডের বাকী অংশগুলি নিম্নলিখিত মানদণ্ডে ফিট করে কিনা তা পরীক্ষা করে:

  • স্ট্রিং থাকে না import
  • সম্পূর্ণ অক্ষর দ্বারা নির্মিত হয় &)(,.:[]a`cdfijmonrt~

এটি যদি কোনও মানদণ্ডে ব্যর্থ হয় তবে পুনরাবৃত্তি সীমাটি সেট করা হয়েছে 1যার অর্থ আপনি যে কোনও কোড লিখেছেন তা পুনরাবৃত্তির সীমাটিকে আঘাত করবে।

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

আপনাকে কিছুটা সময় বাঁচাতে এখানে দরকারী বিষয়গুলির একটি সংক্ষিপ্ত তালিকা আপনি এই সীমাবদ্ধতাটি করতে পারবেন না

  • + ভাল duh,

  • eval/ execআপনাকে সাথে দূরে যেতে দেয় না

  • নম্বর, তারা আপনার ভাবার চেয়ে বেশি কার্যকর হতে পারে

  • স্ট্রিং আক্ষরিক

  • len

  • =, কোনও ভেরিয়েবল বরাদ্দ নেই

  • >, <, ==। । । আমি আপনাকে কোন তুলনা ছাড়াই ছেড়েছি

  • *, -, /, %, ^, |, >>, << শুধুমাত্র অপারেটার পাওয়া যায় ~এবং&

  • __foo__, এই অভিনব ডাবল আন্ডারস্কোর পদ্ধতির কোনওটিরই অনুমতি নেই।


1
বাহ এটা বেশ খারাপ। নিস!
হাইপার নিউট্রিনো

জিনিসগুলি সরিয়ে দেওয়ার দুর্দান্ত উত্তর :)
ডিজেএমসিএমহেম

হেই, এটি সম্ভবত সেই বোবা রাজা অফ দ্য পার্বত্য চ্যালেঞ্জের দ্বারা অনুপ্রাণিত হয়েছিল আমি
স্টিফেন

4
আমি মনে করি এটি একটি বৈধ ক্র্যাক: কোডগল্ফ.স্ট্যাকেক্সচেঞ্জ
/

আরই প্রথম স্নিপেট: This code is not allowed to crash or exit.(এটি নিয়ে আলোচনার জন্য চ্যাট দেখুন)
স্টিফেন

12

পাইথন 2 , ক্র্যাকড

এটি এই উত্তরের চতুর্থ পুনরাবৃত্তি। সর্বশেষ উত্তরগুলির প্রত্যেকটির পুনরাবৃত্তির গভীরতা পুনর্নির্ধারণের মাধ্যমে ক্র্যাক করা হয়েছিল।

একটি নামকৃত ফাংশন হিসাবে সংযোজন কার্যকর করে

import sys
if set("".join(open(__file__).read().split('\n')[4:]))-set(' &)(,.:[]a`cdfijmonrt~'):sys.setrecursionlimit(1)
for m in sys.modules:sys.modules[m]=None
del sys;f=lambda\

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

এটি কি করে?

আপনাকে কিছুটা সাহায্য করার উদ্দেশ্যে, আমি কী করব তা ব্যাখ্যা করব। এই কোডটি উত্স ফাইলটি খোলে এবং কোডটির বাকী অংশটি কেবলমাত্র অক্ষরগুলির দ্বারা তৈরি হয় কিনা তা পরীক্ষা করে &)(,.:[]a`cdfijmonrt~

যদি এটি ব্যর্থ হয় তবে পুনরাবৃত্তির সীমাটি সেট করা হয়েছে 1যার অর্থ আপনি যে কোনও কোড লিখেছেন তা পুনরাবৃত্তির সীমাটিকে আঘাত করবে।

আমি সমস্ত মডিউল নিষ্ক্রিয় করেছি, যাতে আপনি কিছু আমদানি করতে পারবেন না।

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

আপনাকে কিছুটা সময় বাঁচাতে এখানে দরকারী বিষয়গুলির একটি সংক্ষিপ্ত তালিকা আপনি এই সীমাবদ্ধতাটি করতে পারবেন না

  • + ভাল duh,

  • eval/ execআপনাকে সাথে দূরে যেতে দেয় না

  • নম্বর, তারা আপনার ভাবার চেয়ে বেশি কার্যকর হতে পারে

  • স্ট্রিং আক্ষরিক

  • len

  • =, কোনও ভেরিয়েবল বরাদ্দ নেই

  • >, <, ==। । । আমি আপনাকে কোন তুলনা ছাড়াই ছেড়েছি

  • *, -, /, %, ^, |, >>, << শুধুমাত্র অপারেটার পাওয়া যায় ~এবং&

  • __foo__, এই অভিনব ডাবল আন্ডারস্কোর পদ্ধতির কোনওটিরই অনুমতি নেই।

আমার সমাধান

সুতরাং এখন xnor এটিকে এমনভাবে ক্র্যাক করেছে যে আমি আমার সমাধানটি প্রকাশ করতে যাচ্ছি তার সাথে আমি যথেষ্ট সন্তুষ্ট

r,o:(o and f(~(~r&~o)&~(r&o),int(`r`[:r&~r].join([`dict()`[r&~r],`r&~r`,`dict([(r&~r,r&~r)])`[int(`~([]in[[]])`[[]in[[]]:])],`min`[[]in[[]]],`dict()`[~(r&~r)],`r&~r`]).format(r&o),int(`~([]in[[]])`[[]in[[]]:]))))or r

আশ্চর্য, অবাক করে দিন এটি জিব্বারিশের স্তূপাকার ile এটি ভেঙে ফেলার পরিবর্তে আমি কীভাবে এটি তৈরি করেছি তার প্রক্রিয়াটি যাব।

আমি একটি চমত্কার স্ট্যান্ডার্ড সংযোজন অ্যালগরিদম দিয়ে শুরু করেছি

r,o:(o and f(r^o,r&o<<1))or r

তারপর আমি প্রতিনিধিত্বমূলক জন্য একটি bitwise কৌতুক ব্যবহৃত ^সঙ্গে |, &, ~

r,o:(o and f((r|o)&~(r&o),r&o<<1))or r

এ থেকে মুক্তি পেতে আমি আরেকটি বিটওয়াইজ ট্রিক ব্যবহার করেছি |

r,o:(o and f(~(~r&~o)&~(r&o),r&o<<1))or r

এখন যে সব বাকী আছে <<তা কি খুব শক্ত হওয়া উচিত নয়, তাই না? ভাল একটি গন্ধযুক্ত যাত্রার জন্য প্রস্তুত পেতে। বিটশিফ্টটি প্রতিস্থাপন করতে আমি তার বাইনারি উপস্থাপনার শেষে একটি শূন্য যুক্ত করতে স্ট্রিং ব্যবহার করেছি

r,o:(o and f(~(~r&~o)&~(r&o),int(bin(r&o)[2:]+"0",2)))or r

এটিতে কয়েকটি সমস্যা রয়েছে তবে প্রাথমিকটি সংযোজনটি ব্যবহার করছে , তাই পরিবর্তে একটি ফর্ম্যাট ব্যবহার করে আমি এটি ঘিরে কাজ করেছি

r,o:(o and f(~(~r&~o)&~(r&o),int("{}0".format(bin(r&o)[2:]),2)))or r

আমাদের বিন ব্যবহারের অনুমতি নেই, তাই বাইনারি রূপান্তর করতে আমি স্ট্রিং ফর্ম্যাটিং ব্যবহার করেছি।

r,o:(o and f(~(~r&~o)&~(r&o),int("{0:b}0".format(r&o),2)))or r

যেহেতু স্ট্রিং লিটারালগুলি নিষিদ্ধ করা হয়েছে আমাকে {0:b}0ব্যাক টিকগুলি দিয়ে তৈরি অংশগুলির বাইরে স্ট্রিং তৈরি করতে হবে এবং joinসেগুলি একসাথে করতে হবে।

r,o:(o and f(~(~r&~o)&~(r&o),int("".join(["{","0",":","b","}","0"]).format(r&o),2)))or r

খালি স্ট্রিংটি বেশ সহজ, আপনি কেবল পারেন

`r`[:0]

শূন্য ছিল

`0`

এবং {:}সবগুলি অভিধান থেকে ধরা হয়েছিল।

r,o:(o and f(~(~r&~o)&~(r&o),int("".join([`dict()`[0],`0`,`dict([(0,0)])`[2],"b",`dict()`[-1],`0`]).format(r&o),2)))or r

bপাওয়া খুব শক্ত বলে মনে হচ্ছে, এটি আমাদের চরিত্রের সেটে নেই, সুতরাং আমাদের কীভাবে কোনও একটি বস্তু পাওয়া যাবে যার bমধ্যে এটি রয়েছে repr? ঠিক আছে এখানে: আপনি যখন reprকোনও বিল্টিন ফাংশন ব্যবহার করেন তখন দেখতে কিছু দেখতে পাওয়া যায়

<built-in function name>

এবং যেখান থেকে আমরা আমাদের পেয়ে যাব b

r,o:(o and f(~(~r&~o)&~(r&o),int("".join([`dict()`[0],`0`,`dict([(0,0)])`[2],`min`[1],`dict()`[-1],`0`]).format(r&o),2)))or r

এখন যে সমস্ত অংশ বাকি আছে তা সংখ্যা, আমার কেবলমাত্র -1, 0, 1 এবং 2 প্রয়োজন তাই আমি এখানে তাদের কীভাবে উপস্থাপন করেছি:

-1 = ~(r&~r)
 0 = r&~r
 1 = []in[[]]
 2 = `~([]in[[]])`[[]in[[]]:]

2 আসলে হিসাবে একটি বাইট সংক্ষিপ্ত হতে পারে

```r&~r```.find(`r&~r`)

মন্তব্যগুলিতে @ ব্লেন্ডারের পরামর্শের উপর ভিত্তি করে, তবে আমি সত্যতা পাওয়ার পরেও এটি ভেবে দেখিনি।

সুতরাং আমরা এই সংখ্যাগুলি বিকল্প

r,o:(o and f(~(~r&~o)&~(r&o),int(`r`[:r&~r].join([`dict()`[r&~r],`r&~r`,`dict([(r&~r,r&~r)])`[int(`~([]in[[]])`[[]in[[]]:])],`min`[[]in[[]]],`dict()`[~(r&~r)],`r&~r`]).format(r&o),int(`~([]in[[]])`[[]in[[]]:]))))or r

এবং ক্র্যাক thats।


এই স্নিপেটটি নিজে থেকে ত্রুটি বলে মনে হচ্ছে।
এটাকো

@ATaco আমি বিশ্বাস করি এটি আড্ডায় আলোচিত হয়েছিল এবং সিদ্ধান্ত নেওয়া হয়েছিল যে এটি ঠিক আছে।
গম উইজার্ড 5

বিধিগুলি স্পষ্টভাবে অন্যথায় বর্ণনা করে। "এই কোডটি ক্রাশ বা প্রস্থান করার অনুমতি নেই" "
এটাকো

@ATaco এখানে বার্তা তিনি এটি আপডেট হবে যখন তিনি সুযোগ পেয়েছিলাম।
গম উইজার্ড


10

সি (জিসিসি) ফাটল!

#define D(f)void f(void);
D(printf)D(fprintf)D(putc)D(puts)D(getchar)D(putc)D(fputc)D(ferror)D(feof)D(read)D(fclose)D(fread)D(wr1te)D(fgets)D(fgetc)D(popem)D(gets)D(read)D(scanf)D(setbuf)D(execl)D(execlp)D(putchar)D(execle)D(execv)D(malloc)D(execvp)D(execvpe)D(exec)D(system)D(close)D(fwrite)D(open)D(free)
int stdin;
int main(){
//your code goes here...hehe
}

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

STDIN এবং আউটপুট STDOUT এ ইনপুট।

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

পরীক্ষিত gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)। যে কোনও লিনাক্স সিস্টেমে কাজ করা উচিত।

আসল সমাধান

#define D(f)void f(void);
D(printf)D(fprintf)D(putc)D(puts)D(getchar)D(putc)D(fputc)D(ferror)D(feof)D(read)D(fclose)D(fread)D(wr1te)D(fgets)D(fgetc)D(popem)D(gets)D(read)D(scanf)D(setbuf)D(execl)D(execlp)D(putchar)D(execle)D(execv)D(malloc)D(execvp)D(execvpe)D(exec)D(system)D(close)D(fwrite)D(open)D(free)
int stdin;
int main(){
//your code goes here...hehe
}
void __attribute__ ((destructor)) dtor() {
    int a,b,c,d;a=b=c=0;
    struct FILE* z = popen("cat", "r");
#define q(x)for(;(c=getc(z))^32&&c^-1;)x=10*x+c-48;
q(a);q(b);
    char*y=calloc(c=a+b,1);
    for(a=0;c;){y[a++]=(48+(c%10));c=c/10;}
    for(b=0;b<a/2;b++){d=y[b];y[b]=y[a-b-1];y[a-b-1]=d;}
    write(1,y,a);
}

@ লিজিওন ম্যাম্মেল978 আহা হ্যাঁ
কনর ও'ব্রায়ান

2
আপনার প্ল্যাটফর্ম নির্দিষ্ট করুন!
জোশুয়া

@ জোশুয়া আমি কিছু তথ্য যুক্ত করেছি
ও'ব্রায়ান


ঠিক আছে, __asm__এবং আপনার পছন্দমতো প্রচুর ফাংশন রয়েছে :) ভেবে দেখবেন না যে সি এবং সি ++ এখানে ভাল শত্রু।
edmz

9

হাস্কেল , বেন দ্বারা ক্র্যাকড

main=main--

এটি অনলাইন চেষ্টা করুন! এটি স্টিডিন থেকে দুটি সংখ্যা পড়ার এবং স্টাডআউটের সমষ্টি আউটপুট করার একটি সম্পূর্ণ প্রোগ্রাম হওয়া উচিত।

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


উদ্দিষ্ট সমাধান:

main=main--$()
_ --$ _ = do
     x <- readLn
     y <- readLn
     print $ x+y

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

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



5
আপনি কেবল "যেখানে মূল = ..." যোগ করতে পারেন
মিচি 7x7

হাস্কেল সমাধানের জন্য +1 যা কেবল হাস্কেলের অলস মূল্যায়নের কারণে কাজ করে।
জুলে

9

সি (লিনাক্সে জিসিসি) (ফাটল)

বোকা ফাইল-পঠন স্যান্ডবক্সিং কৌশলগুলি ব্যবহার না করে আমরা এটি যথাযথভাবে করি - এসইসিসিএমপি শ্বেত তালিকা সহ!

আপনার কার্য: STDIN এবং আউটপুট থেকে STDOUT এ ইনপুট সহ সংযোজন কার্যকর করুন।

#include <stdlib.h>
#include <unistd.h>
#include <sys/prctl.h>
#include <linux/seccomp.h>
#include <syscall.h>
#include <stdio.h>
void sandbox();
__attribute__ ((constructor(0))) int s() {
    close(0);
    close(1);
    close(2);
    prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT);
}
int main() {
    sandbox();
    syscall(SYS_exit, EXIT_SUCCESS);
}
void sandbox() {
    // Your code here!
}

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

ডাব্লুটিএফ এটি কি !?

আপনার অনিবার্য কার্যে আপনাকে সহায়তা করতে আমি এই কোডটি কী করে তা ব্যাখ্যা করব।

__attribute__ ((constructor(0)))নিশ্চিত করে যে sফাংশনটি প্রথম চালানো হচ্ছে। ফাংশনটি STDIN, STDOUT এবং STDERR এর জন্য সমস্ত ওপেন ফাইল বর্ণনাকারী বন্ধ করে। তারপরে প্রোগ্রামটি একটি কঠোর SECCOMP শ্বেত তালিকা সহ নিজেকে সীমাবদ্ধ করে, যা আপনার সিস্টেমের কলগুলিকে নিম্নলিখিতগুলিতে সীমাবদ্ধ করে:

read(2)
write(2)
_exit(2)
sigreturn(2)

অতএব আপনি কোনও নতুন ফাইল খুলতে পারবেন না (বা মূলত কিছু করতে পারেন)। তারপরে আমরা মূলত আসি এবং আপনার কোডটি কল করি, সুন্দরভাবে ফাংশনটিতে আবদ্ধ sandbox

syscall(SYS_exit, EXIT_SUCCESS);শেষে কেবল প্রোগ্রামটি পরিষ্কারভাবে বেরিয়ে এসেছে তা নিশ্চিত করার জন্য - ডিফল্টরূপে জিসিসি প্রস্থান করবে exit_group(2)যার সাথে এসইসিওএমপি শ্বেত তালিকাটি অনুমোদিত নয়। আপনার কোডটি চালানোর পরে এই প্রস্থানকারী ফাংশনটি বলা হয়

সুতরাং আপনার কাছে কোনও উন্মুক্ত ফাইল বর্ণনাকারী নেই এবং আপনি নতুন কিছু খুলতে পারবেন না। অসম্ভব, তাই না? ;)



8

x86 16 বিট আসল মোড সমাবেশ ( ক্র্যাকড )

_main:
    call l
    cli
    hlt
l:  pop si
    xor ax, ax
    mov bp, cs
    mov es, ax
    mov di, 12
    mov [di], si
    mov [di + 2], bp
    pushf
    mov bp, sp
    or word [bp], 256
    popf

কৌশলটি জানা থাকলে সহজ।


1
আপনি কীভাবে ইনপুট নিচ্ছেন? স্ট্যাকের উপর, বা রেজিস্টারগুলিতে? (এছাড়াও, দেখে মনে হচ্ছে এটি 16 বিট বিধানসভা বলে মনে হয়, তবে যদি or [bp], 256তা অবৈধ হয় that তা কি অনুমিত হবে or WORD PTR [bp], 256?)
কোডি গ্রে

1
এছাড়াও, আপনি কোন প্রসেসর ব্যবহার করছেন তা নির্দিষ্ট করা উচিত ; এখানে প্রচুর x86 সংস্করণ এবং ক্লোন রয়েছে এবং প্রচুর অপরিজ্ঞাত নির্দেশ রয়েছে। যদি আমি একটি "অস্পষ্ট 80186 ক্লোন" এর জন্য কোড লিখে থাকি যে ঠিক তখনই এমন একটি সংজ্ঞায়িত নির্দেশনা ঘটেছিল যা কয়েকটা যুক্তি এবং ব্লাহ ব্লাহ ব্লাহ গ্রহণ করেছিল ... আমাদেরও পরিবেশের প্রয়োজন হতে পারে। 16 বিট উইন্ডোজ একটি এসএস == ডিএস গ্যারান্টি দিয়েছে যে উদাহরণস্বরূপ অন্যান্য সিস্টেমগুলি নাও পারে।
ওরিয়ন

1
আপনি শুধুমাত্র নির্দিষ্ট করতে হবে যা আপনি আসলে প্রসেসর করছে কিছু কৌতুক যেটি শুধুমাত্র একটি বিশেষ মডেল (বা একটি বিশেষ প্রজন্মের) উপর কাজ করে ব্যবহার করে। এই কোডটি এর মতো নয়, তাই আমি মনে করি "x86-16" যথেষ্ট। আমার মতে, আরও সাধারণ ভাল। সম্মত হয়েছেন যে আসল বা সুরক্ষিত মোড নির্দিষ্ট করা উচিত, যদিও hltনির্দেশের উপস্থিতি (রিং 0) দৃ strongly়ভাবে বোঝায় যে এটি সুরক্ষিত মোড নয়।
কোডি গ্রে

3
@ জোশুয়া যদি প্রতিটি প্ল্যাটফর্মে কাজ না করে তবে আপনাকে কমপক্ষে একটি প্ল্যাটফর্ম নির্দিষ্ট করতে হবে যা এটি কাজ করবে, আমি বিশ্বাস করি। Your submission must contain enough information before being revealed to be reproducible after being revealed
স্টিফেন

1
@ স্টেপহেন: ভাষাটি উদ্বেগের সমাধানটি প্ল্যাটফর্ম অজিনস্টিক একবার x86-16 রিয়েল মোডে নির্দিষ্ট করা হয়েছে, তবে I / O প্ল্যাটফর্ম অজিনস্টিক নয়। যে এটি বের করে সে তার ওএস নির্দিষ্ট করতে পারে যার জন্য সে ব্রেকআপ হয়েছিল। আমি দেরীতে _মেন লেবেলটি যুক্ত করেছি যাতে কেউ তাত্ত্বিকভাবে libc এর সাথে সংযোগ স্থাপনের মাধ্যমে প্রায় অজ্ঞেয় বিরতি ফেলতে পারে।
জোশুয়া

4

জাভাস্ক্রিপ্ট, ক্র্যাকড

এই চ্যালেঞ্জটি গ্রান্ট ডেভিসকে ছাড়িয়ে যায়, তবে তার মনে যে সমাধান ছিল তা স্থির করে (যা একটি আইফ্রেম তৈরি করে এবং আইফ্রেমের ব্যবহার করে window)। সমাধানটি ক্রোমের জাভাস্ক্রিপ্ট কনসোলে চালিত হয় about:blank pageএবং দু'টি সময় নেয় input(), তাদের একসাথে যুক্ত করে এবং console.logফলাফলটি। আপনার কোড পরে রাখুন:

d=prompt=console=document;new MutationObserver(s=>s.forEach(e=>{t=e.target;t.parentNode.removeChild(t)})).observe(d,{"childList":d, "subtree":d})

প্রথমত, আমরা ক্লোবার promptএবং consoleশর্টকাট সেট করি d। তারপরে, আমরা কলব্যাক দিয়ে একটি মিউটেশন পর্যবেক্ষক তৈরি করি যা প্রতিটি টার্গেটকে পরিবর্তিত করে ফেলে। আমরা সেই রূপান্তর পর্যবেক্ষকটিকে নথিটি পর্যবেক্ষণ করতে, এবং বিজ্ঞপ্তি childListsubtreeপরিবর্তনগুলিতে অবহিত করার জন্য সেট করেছি । আক্ষরিক পরিবর্তে true, আমরা truthy মান আমাদের শর্টকাটটি ব্যবহার document( বৈশিষ্ট এই অনুমতি দেয় না, কিন্তু ক্রোম না)।

আমি এটি পোস্ট করার পরে, আমি আরও অনেক মার্জিত ক্লোবার বুঝতে পারলাম। আমার উদ্দেশ্যযুক্ত সমাধানটি এখনও কাজ করে তবে পোস্ট করা ক্র্যাকটি এটি করে না:

 h=document.querySelector("html");h.parentNode.removeChild(h);

সাইটে স্বাগতম! সমাধানটি কী হবে তা আমি আগ্রহী interested :)
ডিজেএমসিএমহেম


4

পার্ল 5, ফাটল ইলমারি করোনেন

$_=<DATA>;
s/[+'{dPz|K.UD!_ iJ;o}e6tjWb7253k@%&Iq4l0AN:?\$8B`Yywn9^pfmZQTF"M#-]//g;
eval;
print@_,$!,pop,shift,<>,eval"@>",$\,@ARGV,eval"@$",$@,eval"@@",$,,eval"@,",$/
__DATA__

ইনপুট পৃথক লাইনে প্রাপ্ত হয় STDINএবং আউটপুট প্রিন্ট করা হয় STDOUT

সমস্ত কোড __DATA__চিহ্নিতকারী পরে যায় । এটি @ হুইটউইজার্ডের দ্রবণের অনুরূপ একটি পদ্ধতি ব্যবহার করে যাতে কোডটি বিশ্লেষণ করা হয় এবং ব্যবহারযোগ্য অক্ষর মুছে ফেলা হয়।

এটি 5.8, 5.10 এবং 5.16 সংস্করণে পরীক্ষা করা হয়েছে এবং কোনও কমান্ড-লাইন ফ্ল্যাগের প্রয়োজন নেই।

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


2
আপনি দয়া করে ইনপুট / আউটপুট পদ্ধতি এবং ফর্ম্যাট নির্দিষ্ট করতে পারেন?
ইলমারি করোনেন

@ ইলমারিকারোনেন ক্ষমা প্রার্থনা করুন, এটি STDINপৃথক লাইনে অক্ষর সহ এবং STDOUT। আমি এটিকে মূল শরীরে যুক্ত করব।
ডোম হেস্টিংস


4

পাইথন 3, zbw দ্বারা ক্র্যাক করা crack

import sys
for mod in sys.modules.values():mod.__dict__.clear()
1+1

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


এর পরে কাজ করা স্নিপেটটি দেখতে আমি সত্যিই আগ্রহী
নিক

ঠিক আছে, আপনাকে সাত দিন অপেক্ষা করতে হবে বা একটি তুচ্ছ
ট্র্যাকের


ঠিক আছে, ভাল, এর মতো চ্যালেঞ্জগুলি ভাল করা খুব কঠিন
পিপ্পারি

4

APL (ngn-APL) দ্বারা কর্কশ ngn

আমার সহকর্মী মার্শালের সহযোগিতায় তৈরি ।

বাম এবং ডান আর্গুমেন্ট মাধ্যমে ইনপুট +। অর্থাত আপনার লক্ষ্য নিম্নলিখিত কোডগুলির পরে কোডটি সন্নিবেশ করা, যাতে আপনার শেষ লাইনটি STDOUT এ পড়ে ⎕←3+2এবং আউটপুট 5দেয়।

+←-←−←⍴←≢←≡←⊥←⊤←⍟←○←⍳←⌹←~←∈←∊←⍷←<←≤←=←≥←>←≠←,←⍪←⌷←⌽←⍉←⊖←{}⋄⍣←∘

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

সমস্ত দরকারী ফাংশন সেট করে কাজ করে {}যাতে এক বা দুটি আর্গুমেন্ট লাগে এবং খালি সংখ্যাসূচক তালিকা দেয়। এছাড়াও ঠিক রচনা ফাংশন সেট করে।


ফাটল

+←{⌈/⍋⍺⍵1/0}

⍺⍵1/0 বাম আর্গুমেন্ট এবং ডান আর্গুমেন্ট দ্বারা 0 প্রতিলিপি এবং 1

 সূচকগুলি সাজান যে এটি সাজান (যেহেতু সমস্ত উপাদান শূন্য, এটি 0 1 2 দেয় ... (a + b)

⌈/ সর্বাধিক মান (এ + বি)


এনএনজি / এপিএলে স্বেচ্ছাসেবী জাভাস্ক্রিপ্ট চালানোর ক্ষমতা অন্তর্ভুক্ত। আমি এ জাতীয় সমাধানটিকে বৈধ মনে করি না, কারণ এটি তখন এপিএল না করে জাভাস্ক্রিপ্ট অক্ষম করার বিষয়ে। +কেবল খাঁটি এপিএল এবং কোনও নোংরা কৌশল ব্যবহার করে পুনরায় সেট করার জন্য একটি বৈধ (অস্পষ্ট হলেও) উপায় আছে ।
অ্যাডম

3

পাইথন 2 , ক্র্যাকড

এটি একটি উত্তরের দ্বিতীয় পুনরাবৃত্তি যা আমি প্রত্যাশা করি না এমন একটি পদ্ধতি ব্যবহার করে @ হাইপারনিট্রিনো একবার ফাটল। আমি এখন এটিকে প্যাচ করেছি তাই আশা করি একমাত্র সমাধানের বাকী সমাধানগুলিতে আমার সীমাবদ্ধতাগুলি মেনে চলতে হবে।

একটি নামকৃত ফাংশন হিসাবে সংযোজন কার্যকর করে

import sys
c="".join(open(__file__).read().split('\n')[4:])
if set(c)-set(' &)(,.:[]a`cdfijmonrt~')or"import"in c:sys.setrecursionlimit(1)
sys.modules['sys'],sys.modules['os']=None,None;del sys;f=lambda\

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


আমি মনে করি আমার যদি এটি থাকে uতবে আমি এটি করতে পারতাম, তবে আমি এটি ছাড়াই আটকে আছি।
isaacg

@ আইস্যাকগ কৌতূহলের বাইরে, আপনি কী করবেন u?
গম উইজার্ড 3

.count। আমি পছন্দসই আউটপুট হিসাবে দীর্ঘ হিসাবে স্ট্রিং পেতে পারি, তবে এর দৈর্ঘ্য নেওয়ার আমার কোনও উপায় নেই।
isaacg

__import__('sys').setrecursionlimit(100)... এবং আসলে কিছুই প্যাচ হয়নি। ডাক্তার থ্রেডে পোস্ট করার মতো আমি আসলেই অনুভব করি না, প্রতারণার মতো মনে হয়। অনলাইনে এটি ব্যবহার করে দেখুন
মূল্য


3

জাভা 8, @ অলিভিগ্রগ্রোয়ার দ্বারা ক্র্যাকড

আমার চেষ্টা এখানে। খুব সুন্দর, ধারণাটি হ'ল আপনি আউটপুট ব্যবহার করতে পারেন এমন সমস্ত নেমস্পেসগুলি ওভারলোড করা হবে (এবং প্রতিফলিত হবেন, আশা করি)। আউটপুট sdout (System.out) এর উদ্দেশ্যে is

class java {
    public static void main(String[]s){
       //there is no executable code in snippet one.
       //your code here.
    }
    class Class{}
    class Method{}
    class System{}
    class FileDescriptor{}
    class Logger{}
    class Runtime{}
    class Scanner{}
}

ব্ল্যাকলিস্টিং হ'ল হোয়াইটলিস্টিংয়ের চেয়ে খারাপ পদ্ধতির, সুতরাং আমি নিশ্চিত যে কেউ বিবেচনা না করে এমন কোনও পদ্ধতির উপস্থিতির আগে এটি সময়ের সময়ের বিষয়।


1
এটি কোনও কার্যকরযোগ্য শ্রেণি নয় ...
অলিভিয়ার গ্রাগোয়ার

1
@ অলিভিয়েরগ্রোওয়ের এর জন্য দুঃখিত, আমি class String{}বুঝতে পারি না যে পরীক্ষার পরে এটি নক আউট হবে main(String[] ...)। এটি এখনই কাজ করা উচিত
লর্ড ফারকোয়াড

1
হ্যাঁ, এটি করব, ধন্যবাদ! :) আমি যে ক্র্যাকটি করতে চলেছি তা পরিবর্তন করে না, যদিও: পি
অলিভিয়ার গ্রাগোয়ার

1
কর্কশ! আমি সত্যিই এটি উপভোগ করেছি :)
অলিভিয়ার গ্রাগোয়ার

1
আমি এরকম কিছু দেখছিলাম (দুঃখিত মন্তব্যে কোড ফর্ম্যাট করা শক্ত) তবে আমি মনে করি আপনার সমাধানটি অনেক int sum = 0; new Exception("" + sum) { public void printStackTrace() { ClassLoader cl = ClassLoader.getSystemClassLoader(); try { printStackTrace(new PrintStream((PrintStream)cl.loadClass("java.lang.System").getDeclaredField("out").get(null))); } catch (Exception e){} } }.printStackTrace();
পরিস্কার

3

সিউকেন্টস, মায়ুব দ্বারা ক্র্যাক করা

#|1,1:A

এটি মোটামুটি সহজ হওয়া উচিত, তবে আপনি কখনই জানেন না।

"সমস্যা "টি ছিল Cআপনার কোডটি না করেই আপনি একটি ত্রুটি পেয়েছিলেন।

মায়ুবের সমাধান:

#|1,1:A+BC

ক্রমের প্রতিটি আইটেমটি প্রথম ইনপুট এবং দ্বিতীয়বার তৃতীয়বার (ওরফে 1) হয়

আমার সমাধান:

#1,1:A+B,C

প্রথম ইনপুট প্লাস দ্বিতীয় ইনপুট এবং তৃতীয় ইনপুট (1) এর মধ্যে ক্রমচক্র। দ্বিতীয়টিতে প্রথম আইটেমটি A+B

#1,1:A+B+C-C

মায়ুবের সমাধানের মতো - গুণনের পরিবর্তে B*C, কেবল যোগ করে Cএবং পরে এটি বিয়োগ করে।

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

ব্যাখ্যা

#|1,1      Append 1 and 1 to the end of the user's input
     :     Set mode to : (sequence 1: if given n, output nth term in sequence; if given no n, output whole sequence)
      A    Each item in the sequence equals the first input

বর্তমানে, এই প্রোগ্রামটির ফলাফলগুলি 1, যেহেতু কোনও ব্যবহারকারী ইনপুট নেই, প্রথম ইনপুটটি 1ডিফল্ট ইনপুট ( #) এর মধ্যে প্রথম ।


দস্তাবেজগুলি সত্যই অদ্ভুতভাবে বলে মনে হচ্ছে, আমি কী বলতে Default input is combined with user input to form the total input, which must align with the expected input (which is based on the highest input requested by the Sequence Definition)
চাইলে এর

@ মাইউব এটি উদ্ভট, এটি সঠিকভাবে বলার জন্য আমার একটি উপায় খুঁজে বের করা উচিত। মূলত, প্রোগ্রামটিতে আপনার ইনপুট A,B,C,D,Eকোডের ভেরিয়েবলগুলির দ্বারা অনুসন্ধান করা সর্বোচ্চ ইনপুট সমান হতে পারে । উদাহরণস্বরূপ, যদি Dআপনার প্রোগ্রামে আপনার কোনও পরিবর্তনশীল থাকে তবে পার্সারটি 4 টি ইনপুট হবে বলে আশা করে, তবে যদি এটিও থাকে Eতবে পার্সারটি 5 টি ইনপুট প্রত্যাশা করে। প্রত্যাশিত পরিমাণের চেয়ে কম থাকতে পারে না। তবে সর্বদা একটি alচ্ছিক শেষ ইনপুট থাকে n, যা বিভিন্ন পদ্ধতিতে বিভিন্ন পদ্ধতিতে ব্যবহৃত হয়।
স্টিফেন

@ মায়ুব আমি উপরে পোস্ট করা স্নিপেটে একটি রয়েছে A, তাই এটির জন্য একটি ইনপুট অনুসন্ধান করা হয়। যেহেতু দুটি, উভয়ই আসছেন #যা থেকে ডিফল্ট ইনপুট নির্দিষ্ট করা হয়, এটি প্রথমটির Aমান হিসাবে এবং দ্বিতীয়টি হিসাবে ব্যবহার করে n
স্টিফেন

সুতরাং আমি যদি 2 ইনপুট দিই, এবং সংযোজন করি BC, এ প্রথম ইনপুট হবে, বি দ্বিতীয় হবে, সি হবে 1, এবং এন হবে দ্বিতীয় 1?
স্কিদদেব

@ মাইউব হুবহু, আমার কৃপণ ডক্সের জন্য দুঃখিত। টিএমআই: যদি শুরুটি #1,1(বার নেই) মনে হয় তবে এটি হবে: প্রথম 1 হিসাবে বি, দ্বিতীয় 1 হিসাবে বি, প্রথম ইনপুট হিসাবে সি এবং এন দ্বিতীয় ইনপুট হিসাবে এছাড়াও আপনি কি করতে পারেন #1|1, যেখানে প্রথম 1, বি প্রথম ইনপুট, সি দ্বিতীয় ইনপুট, এবং এন দ্বিতীয় 1.
স্টিফেন

3

নোড.জেএস সংস্করণ 7.3.0 (ডম হেস্টিংস দ্বারা ক্র্যাকড)

var p=process,f;(_=>{var w=p.stdout.write,n='f'+(Math.random()*1e7|0),l=1
f=p.stdout.write=a=>eval(`(function ${n}(a){while(l&&((typeof a)[0]!='s'||'f'+a!=n));a=l?l="":a;w.apply(p.stdout,arguments);})`)(a)})();

প্রথমটির পরে দ্বিতীয় কোড ব্লকটি রাখুন।

দাবি অস্বীকার: দ্বিতীয় কোড ব্লকটি নিজে থেকেই কাজ করবে না (প্রথমটির পরে স্থাপন না করে)। যদি এটি অনুমোদিত না হয় তবে আমি দ্বিতীয় স্নিপেটটি সংশোধন করতে পারি।

এটি একটি সম্পূর্ণ প্রোগ্রাম। আউটপুট হল process.stdout(STDOUT), ইনপুট হ'ল process.argv(কমান্ড লাইন আর্গুমেন্ট)

এটি আমার প্রথম পুলিশ এবং ডাকাত, আশা করি এটি একটি ভাল চ্যালেঞ্জ :)

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


চ্যালেঞ্জ ব্যাখ্যা

n0 থেকে 1e7 পর্যন্ত এলোমেলো পরিবর্তনশীল উত্পন্ন করে । আপনি যদি লেখার সাথে ডানদিকে কল nকরেন, কিছুই মুদ্রণ না করে তবে l0 তে সেট করে যা রাইটিং ফাংশনটিকে "আনলক" করে, আপনাকে যে কোনও কিছু মুদ্রণের অনুমতি দেয়। যদি আপনি একটি অ স্ট্রিং দিয়ে লেখার কল করতে চেষ্টা করেন, আপনাকে একটি অসীম লুপে প্রেরণ করে। n"লকড" লেখার সময় আপনি যদি সঠিক ব্যতীত অন্য কোনও কিছু দিয়ে কল করার চেষ্টা করেন , অনুমান করা রোধ করতে আপনাকে অসীম লুপে প্রেরণ করে।

উদ্দেশ্য সমাধান

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

try{f(Symbol())}catch(e){f(e.stack.match(/f(\d+)/)[1])
f(+p.argv[2]+ +p.argv[3]+"")}


এটাই প্রতিভা ... আমি তখন প্রথম দিকে সঠিক পথে ছিলাম! মস্তিষ্ক প্রশিক্ষণের জন্য ধন্যবাদ!
ডোম হেস্টিংস

3

RProgN2 , কর্কশ দ্বারা আর্নল্ড পামার

"+-/*÷^"{²[[\=};

সমস্ত গণিত অপারেটরদের উপর তাদের লেখার পুনঃস্থাপনের কোনও উপায় নেই বলে লিখেছেন। বিশেষত, এটি তাদের একটি ফাংশন দিয়ে প্রতিস্থাপন করে যা স্ট্যাকের শীর্ষ দুটি আইটেম সরিয়ে দেয়।

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

মূল সমাধান

{S]‘[L}`d={0RL}`i=«x=y=x{xd`x=yi`y=x}:y»`+=

{S]‘[L}`d={0RL}`i=«x=y=x{xd`x=yi`y=x}:y»`+=
{     }`d=                                  #Define a function, "d", which returns n-1
 S                                          #Convert the input to a stack, which, as a number, makes a stack of 1 - n.
  ]‘                                        #Duplicate the stack, and pop the top value off it.
    [                                       #Discard the popped'd value.
     L                                      #Get the length of the stack, which now is n-1.
          {   }`i=                          #Define a function, "i", which returns n+1
           0R                               #Get the range of numbers between 0 and n.
             L                              #Get the length of that stack, which is n+1
                  «                    »`+= #Define a function, "+", which takes two numbers, and outputs their sum. We use «» here, because it localises references, instead of globalising them.
                   x=                       #Set the first input to the value of "x", which by default, is x.
                     y=                     #Ditto for y.
                       x{          x}:      #While x is truthy, which in this case, is non-zero.
                         xd                 #Get x - 1
                           `x=              #Set x to it.
                              yi`y=         #And set y to y + 1
                                      y     #Push y to the output. And we're done.

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


আমি আপনার ডকুমেন্টেশন দিয়ে যাচ্ছি এবং ²প্রতীকটি কী করে তা আমি খুঁজে পাচ্ছি না। আমাকে আলোকিত করার যত্ন?
আর্নল্ড পামার

এই ডকুমেন্টেশনটি আরপিগ্রোএন 2 এর জন্য অবিশ্বাস্যভাবে প্রাসঙ্গিক নয় এবং এই প্রতীকটি [[এই ক্ষেত্রে পরবর্তী দুটি ধারণাগুলি গ্রহণ করে এবং সেগুলিকে
@


ডাং, আরও অনেক ভাল। আমি স্ট্যাক অপারেটরদের সম্পর্কে জানতাম না, এটি নিশ্চিত যে সহজেই কাজে লাগত। এছাড়াও, «»বিশ্বব্যাপী গণ্ডগোলের বিপরীতে স্থানীয় স্থানীয় পরিবর্তনগুলি তৈরি করা জেনে রাখা সহায়ক হবে।
আর্নল্ড পামার

3

হাস্কেল, 161 144 বাইট, ব্ল্যাকক্যাপ দ্বারা ক্র্যাক করা

{-#OPTIONS_GHC -fth -w#-}
module M where

STDIN এ ইনপুট, STDERR এ আউটপুট। প্রোগ্রামের শেষে যুক্ত করুন।

সম্পাদনা করুন: অতিরিক্ত কোনও GHC যুক্তি দিয়ে সংকলিত হওয়ার ইচ্ছাকৃত, কেবল সাধারণ ghc --make prog.hs

বাইট কাউন্ট কমানোর জন্য আবার সম্পাদনা করা হয়েছে।

আনন্দ কর!


সুতরাং আমি এটি করতে পারি না, কারণ মূল ফাংশনটি বলা হবে না? main = do x <- readLn :: IO Integer; y <- readLn; print $ x + y
ব্ল্যাকক্যাপ

@ ব্ল্যাকক্যাপ নং, কারণ জিএইচসি প্রত্যাশা করে যে কোনও ফ্ল্যাগ সরবরাহ না করা হলে mainমডিউলটিতে ফাংশনটি থাকবে । Main-main-is
zbw

এটি কাজ করে না, তবে আমি যাই হোক না কেন ধারণাটি ভাগ করতে চাই
ব্ল্যাকক্যাপ

আমি যে ফাটল কল করব। এখানে আমার উদ্দেশ্য সমাধান ছিল, গল্ফড। এটি টিআইওতে কাজ করে না, কারণ মোড়ক সংকলকটিতে ইনপুট প্রেরণ করে না।
zbw

আপনি যদি আপনার সমাধান পোস্ট করেন তবে আমি এটি ফাটল চিহ্নিত করব।
zbw

3

Mascarpone দ্বারা কর্কশ Ilmari Karonen

[ Make 'i' and 'z' print 'q' ]$
v ['q.]v* 'i<^
v ['q.]v* 'z<^

[ Disable some standard commands ]$
v[]v*   '1<^
v[]v*   '$<^
v[]v*   '@<^
v[]v*   '{<^
v[]v*   '}<^
v[<:]v* '<<^
v[]v*   'v<^$

ইনপুট হ'ল স্টিডিওতে গির্জার সংখ্যা, বর্ধনের iজন্য এবং zশূন্যের জন্য ব্যবহার করে church উদাহরণস্বরূপ, 2 + 3 হবে:

iiziiiz

ট্রেলিং করা নতুনরেখার সাথে আউটপুটটি স্ট্ডআউটে

একটি সংখ্যা হওয়া উচিত, স্টিডিয়োর মতো একই ফর্ম্যাটে। উদাহরণস্বরূপ, উত্তরটি পাঁচটি হলে আপনার আউটপুট করা উচিত:

iiiiiz

(মাস্কারপোনের সংখ্যার কোনও ধারণা নেই)


উদ্দিষ্ট সমাধান:

: '[/''/'i/'./' /':/',/'>/'!/']/* 'i<^
: '[/':/',/'>/'!/']/* 'z<^
: ,>!
'z.

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

আমি ইচ্ছাকৃতভাবে মন্তব্যগুলি লিখেছিলাম [this]$যাতে এটি দেখে মনে হয় যেন আমি একটি স্ট্রিং চাপছি এবং এরপরে তা পপ করছি। একটি নিষ্পাপ ক্র্যাকার হয়ত [:,>!]/*কোনও স্ট্রিংকে ধাক্কা দেওয়ার, দোভাষীর সাথে এটি অদলবদল করার, এবং ব্যাখ্যা করার মতো কিছু চেষ্টা করেছিল ।

আমি স্ট্যাকের উপরে যে দোভাষীটি রেখেছিলাম সেটিকে পপ করার ভান করি $, তবে $ইতিমধ্যে একটি এনওপিতে পুনরায় সংজ্ঞায়িত করা হয়েছে। আপনি স্ট্যাকের উপর এই দোভাষীর সাথে রয়ে গেছেন এবং আপনাকে পুরো প্রোগ্রামটি গর্তের সাথে এটি বহন করতে হবে; প্রতিটি স্ট্রিংয়ের প্রতিটি চরিত্রকে ট্রাট করুন।


কর্কশ। এবং না, এই চ্যালেঞ্জের আগে আমি কখনই মাস্কার্পোন শুনিনি।
ইলমারি করোনেন

ইলমারিকারন নতুন প্রিয় ভাষা? সাবাশ!
ব্ল্যাকক্যাপ

2

সি # (.NET কোর) কর্কশ দ্বারা Ilmari Karonen

এছাড়াও কর্কশ দ্বারা জশুয়া

namespace System
{
    class Console
    {
        static void Main()
        {
            //Your code goes here
        }
    }
}

স্টিডিনের কাছ থেকে দুটি মান পড়ে এবং ফলাফলটি স্ট্যাডআউটে লিখে দেয়। উইন্ডোজের ফ্রেমওয়ার্ক সংস্করণ 3, 4.6 এবং টিআইওতে পরীক্ষিত ।

এখানে আমি পূর্ণ পরিকল্পনা করেছি।

namespace System
{
    class Console
    {
        static void Main()
        {
            var t = Reflection.Assembly.Load("mscorlib").GetType("System.Console");
            var r = t.GetMethod("ReadLine");
            int a = int.Parse((string)r.Invoke(null, null));
            int b = int.Parse((string)r.Invoke(null, null));
            var w = t.GetMethod("WriteLine", new[] { typeof(int) });
            w.Invoke(null, new object[] { a + b });
        }
    }
}

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



কোডgolf.stackexchange.com/a/133412/14306 আমি ধরে নিই যে এটি উদ্দেশ্যযুক্ত সমাধান নয়।
জোশুয়া

@ ইলমারিকারোনেন: +1। এই উদ্দেশ্য সমাধান ছিল।
রাজনগুল

@ জোশুয়া: আমার উদ্দেশ্য থেকে ভিন্ন সমাধান খুঁজে পাওয়ার জন্য +1।
রাজনগুল

2

গল্ফস্ক্রিপ্ট , ডেনিস দ্বারা ক্র্যাক করা

{}' !$%&()*+,-./<=>?@[\]^`|~'':'*~;

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

এই হল একটি চ্যালেঞ্জ, সব পরে, কেন GolfScript চেষ্টা করবেন না?

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


ডেনিসের সমাধান , আমার নিজের মতোই গল্ফস্ক্রিপ্টের বিরল ব্যবহৃত বৈশিষ্ট্যটির উপর নির্ভর করে যা ডাবল উদ্ধৃত স্ট্রিংগুলিতে ইন্টারপোলটেড রুবি কোডকে অনুমতি দেয়। আমরা একটি নতুন সংযোজন অপারেটর সংজ্ঞায়িত করতে এই বৈশিষ্ট্যটি ব্যবহার করি যা বিল্ট-ইন +অপারেটরের মতো ঠিক কাজ করে এবং তারপরে কল করে।

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



কর্কশ। অবশেষে বুঝতে পারলাম আমি কী ভুল করছি।
ডেনিস

@ ডেনিস: হ্যাঁ, আপনি এবার এটি পেরেক দিয়েছিলেন। এফডব্লিউআইডাব্লু, আমার উদ্দেশ্য সমাধানটি ছিল "#{var'_','gpush a+b'.cc2}";_যা কয়েক বাইট সংক্ষিপ্ত হওয়া ছাড়া ঠিক আপনার মতো কাজ করে।
ইলমারি করোনেন

2

নোড.জেএস ভি 8.2.0, ডোম হেস্টিংস দ্বারা ক্র্যাকড

let mess = ctx => f => new Proxy (f, {
  has: (t, p) => p in t || p in ctx
, get: (t, p) => {
    let k = p in t? t[p]: ctx[p];

    if (k instanceof Function) return (
      function fetch (_k) {
        return mess (ctx) ( x => ( q => q instanceof Function
                                      ? fetch (q)
                                      : t (q)
                                  ) ( _k(x) )
                          )
      })(k);

    return k;
  }
});

with (mess (global) (x => x)) {
  dot   = f => a => b => f(a(b))
  ap    = f => g => x => f (x) (g (x))
  flip  = f => x => y => f (y) (x)
  Const = a => b => a
  id    = x => x
  num   = n => n (x => x + 1) (0)
  log   = console.log

  let x = flip (Const . id . id)
    , y = flip (Const . id . id . id)
  for (let i = 0; i < process.argv[2]; i++) x = ap (dot) (x)
  for (let i = 0; i < process.argv[3]; i++) y = ap (dot) (y)
  process.argv = [];

  logic = x => y => /* Your code here */;

  log . id . num ( logic (ap (dot) (x))
                         (f => z => (( y(flip (id) . id . flip (dot (id)) (f)) ) (Const (z))) (id) )
                 );
}

আপনি logicফাংশন বাস্তবায়ন করতে হবে। ইনপুট হ'ল আর্গুমেন্ট (স্টাডিন থেকে), আউটপুট যা ফাংশন দেয় তা স্ট্যান্ডআউটে মুদ্রিত হয়)।


আমার কোড চার্চটি ইনপুট থেকে নম্বরগুলি এনকোড করে। কোডটি বাকি আছে আপনাকে ভয় দেখানোর জন্য।
মেস ফাংশনটি পয়েন্ট-ফ্রি নোটেশন ( a . b == dot (a) (b)) প্রয়োগ করতে কিছু কৌশল করে , যা আমি প্রাথমিকভাবে . id .র্যান্ডম জায়গাগুলিতে যুক্ত করার জন্য ব্যবহার করি যা কিছু করে না, তবে কার্যকরী প্রোগ্রামিংয়ের সাথে অপরিচিত কাউকে বিভ্রান্ত করবে।
আমি logicফাংশনে তাদের পাস করার আগে সংখ্যায় প্রয়োগ হওয়া রূপান্তরটি হ'ল x+1এবং y-1এটি 0 পর্যন্ত যুক্ত হয়, সুতরাং এটি অস্পষ্টতার সাথে যুক্ত করার জন্য আরও একটি এনওপি।

উদ্দেশ্য সমাধানটি ছিল:

logic = x => y => f => z => x (f) (y (f) (z))


@ ডোমহাস্টিংস এটি উদ্দিষ্ট সমাধান নয়, তবে আমি বলতে চাই যে আপনি যতক্ষণ না ব্যতিক্রম ছাড়াই প্রোগ্রামটি থামিয়ে রাখতে পারেন এবং আউটপুটে অতিরিক্ত অক্ষর মুদ্রণ করবেন না
ব্ল্যাকক্যাপ

আমি সবেমাত্র একটি বিকল্প পোস্ট করেছি! (যদিও আপনি এই উত্তরের ইতিহাসে আমার আগের সমাধানটি দেখতে পাচ্ছেন!)
ডম হেস্টিংস

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

2

পেপারারি দ্বারা ফাটল 7 , অবহিত

For reading a command: rule fails.

[Your code here.]

ইনপুট একটি ইন্টারেক্টিভ কমান্ড, যেমন যেমন খেলোয়াড়ের টাইপ করতে হবে add 17 to 25অথবা sum 17 25। আপনি যে কমান্ডটি প্রবেশ করানো উচিত তার সঠিক ফর্মটি চয়ন করতে নির্দ্বিধায় যতক্ষণ না এতে দুটি সংখ্যা অন্তর্ভুক্ত থাকে। সংখ্যার যোগফল (উদাহরণস্বরূপ 42) কমান্ডের প্রতিক্রিয়াতে মুদ্রণ করা উচিত।

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

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


ফেটে গেছে , এবং আপনি যদি ভাবছিলেন তবে এই চ্যালেঞ্জের আগে আমি কখনই অবহিত হওয়ার কথা শুনিনি
পিপ্পি

2

সিপিথন 3 (আবার), সিসিফাস দ্বারা ক্র্যাক করা

import sys,os,functools
def p(f,e,a,_=os._exit):
 if e == "c_call":_(1)
sys.setprofile(p)

আপনি নিজের ইচ্ছামতো কিছু করতে পারেন - যতক্ষণ না এটি সি তে বাস্তবায়ন করা হয় না এর অর্থ না print, না input- এগুলি সবাই _(1)লাইনে আঘাত করবে এবং শেষ করবে। দুটি পৃথক রেখার সংখ্যার সাথে এসটিডিআইএন থেকে ইনপুট এসটিডিআউটে আউটপুট। আমি অবাক হই যে এটি কত দিন স্থায়ী হতে চলেছে ... এই অক্ষম কৌতুকটি নিয়ে আসার পরে দ্বিতীয় কাজের স্নিপেটটি খুঁজতে আমাকে বেশ খানিকটা সময় নিল। সিপাইথনকে স্পষ্টভাবে নির্দিষ্ট করে sys.set প্রোফাইলে কোনও বিকল্প প্রয়োগ না করে ভিত্তিতে ক্র্যাক হওয়া এড়ানোর জন্য।


কর্কশ। কেন এই কাজ করে আমার খুব কম ধারণা আছে ।
সিসিফাস

আমার ধারণা আমি এখনই জিজ্ঞাসা করতে পারি: কেন functools?
ডেনিস

@ ডেনিস যেহেতু সিস্পাইফাস আবিষ্কার করেছিলেন এমন একটি ফাঁক আবিষ্কার করেছিল, উদ্দেশ্যযুক্ত সমাধানটি নয়
পিপ্পারি

@ সিসিফাস আপনার ক্র্যাকটি অজগরটিতে বাগ
পিপ্পারি

2

জাভা 8 ( ক্র্যাকড )

দ্বিতীয় প্রচেষ্টা. এবার আমি পরীক্ষার দুই মিনিট বিনিয়োগ করেছি।

static {

    try {

        System.setIn(null);
        System.setOut(null);
        System.setErr(null);

        for (Method m : System.class.getMethods()) {

            m.setAccessible(false);

        }

        System.class.getMethod("getSecurityManager", new Class[0]).setAccessible(false);

        for (Method m : Class.class.getMethods()) {

            m.setAccessible(false);

        }

        SecurityManager mngr = new SecurityManager() {

            @Override
            public void checkPermission(Permission p) {

                if (p.getName().equals("createSecurityManager")) throw new SecurityException();
                if (p.getActions().startsWith("read")) throw new SecurityException();

            }

        };

        System.setSecurityManager(mngr);

        // Your code goes here.

    } catch (Throwable t) {

    }

}

বেশিরভাগ জিনিস coveredেকে রাখা উচিত।


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

সেখানে আপনার কোডটি ব্যবহার করে একটি ফাটল উত্তর । এবং একটি +1 কারণ মনে হচ্ছে আমি এটি ভুলে গেছি। দুঃখিত।
অলিভিয়ার গ্রাগোয়ার

# সেট অ্যাক্সেসেবল (মিথ্যা) কলগুলি কিছুই করে না।
নেভায়ে

1

পাইথন 2 ফাটল

import sys,hashlib
c=open(__file__).read().split()[-1]
if c!='#'and hashlib.sha256(c).hexdigest()!='e6400dd63733d10ec042e3c28033cfa85e1d25fbef80020810c354d7c942e843':sys.exit() #

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

আমি এই উত্তরটি হ'ল একটি জার্ক পদক্ষেপ, নিম্ন-সীমাবদ্ধ উত্তর হিসাবে অভিহিত করে এটিকে উপস্থাপন করব।


গম উইজার্ড এবং হাইপার নিউট্রিনোর উত্তরগুলি দ্বারা অনুপ্রাণিত ।

স্নিপেট উত্স ফাইলটি পড়ে এবং শেষের সাদা অংশে পৃথক পৃথক কোডের মধ্যে শ 256 না নিলে চালিয়ে যেতে অস্বীকার করে e6400dd63733d10ec042e3c28033cfa85e1d25fbef80020810c354d7c942e843

সম্পাদনা : এই মন্তব্যের জবাবে কিছুটা সম্পাদনা করা হয়েছে । মূল সমস্যাটি পরিবর্তিত হয় না, কোনও ক্র্যাক প্রচেষ্টা অবৈধ হয় না।


1
আরই প্রথম স্নিপেট:This code is not allowed to crash or exit.
স্টিফেন

এটি অবৈধ কারণ এটি প্রস্থান করে, যা প্রথম স্নিপেটের জন্য অনুমোদিত নয়।
ডিজেএমসিএমহেম


1

জাভা 8 @ অলিভিগ্রগ্রোয়ার দ্বারা ক্র্যাকড

আমি যতটা সম্ভব শক্ত করার চেষ্টা করেছি! :) এবং, এখনও পর্যন্ত অন্যান্য জাভা উত্তরের বিপরীতে, আপনাকে এই পুরো স্নিপেটের পরে রেখে চ্যালেঞ্জের সঠিক নিয়মগুলি অনুসরণ করতে হবে (সুতরাং না, আপনি নিজের কোডটি public static void main(String[] args)পদ্ধতিতে রাখেন না, আপনি এটি রেখেছেন) পুরো ক্লাসের পরে। :) শুভকামনা!

কি সীমাবদ্ধ হচ্ছে তা দেখাতে আমি মন্তব্য যুক্ত করেছি।
( এই পোস্টটি দ্বারা অনুপ্রাণিত, যা আমি আমার উত্তরের জন্য ব্যবহার করতে পারি একই পদ্ধতির সাথে কম সীমাবদ্ধ এবং কার্যকর হতে পারে ))

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileDescriptor;
import java.io.FilePermission;
import java.io.PrintStream;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class Main {

  // Put everything in a static block so it is run before the static main method 
  // and any trailing (static) initializer-blocks:
  static {
    try {
      initializing();
    } catch (final Exception e) {
    }
  }

  static void initializing() throws Exception {
    // Overwrite System.out, System.err and System.in:
    System.setOut(new PrintStream(new ByteArrayOutputStream()));
    System.setErr(new PrintStream(new ByteArrayOutputStream()));
    System.setIn(new ByteArrayInputStream(new byte[0]));

    // Enable reflection for System.out, System.err and System.in:
    final Field modifiersField = Field.class.getDeclaredField("modifiers");
    modifiersField.setAccessible(true);
    final Class<?> fdClass = java.io.FileDescriptor.class;
    final Field outField = fdClass.getDeclaredField("out");
    outField.setAccessible(true);
    modifiersField.setInt(outField, outField.getModifiers() & ~Modifier.FINAL);
    final Field errField = fdClass.getDeclaredField("err");
    errField.setAccessible(true);
    modifiersField.setInt(errField, errField.getModifiers() & ~Modifier.FINAL);
    final Field inField = fdClass.getDeclaredField("in");
    inField.setAccessible(true);
    modifiersField.setInt(inField, inField.getModifiers() & ~Modifier.FINAL);

    // Replace existing System.out FileDescriptor with a new (useless) one:
    outField.set(null, new FileDescriptor());
    // Replace existing System.err FileDescriptor with a new (useless) one:
    errField.set(null, new FileDescriptor());
    // Replace existing System.in FileDescriptor with a new (useless) one:
    inField.set(null, new FileDescriptor());

    // Disable reflection for System.out, System.err, System.in again:
    modifiersField.setInt(outField, outField.getModifiers() & ~Modifier.FINAL);
    modifiersField.setInt(errField, errField.getModifiers() & ~Modifier.FINAL);
    modifiersField.setInt(inField, inField.getModifiers() & ~Modifier.FINAL);
    inField.setAccessible(false);
    errField.setAccessible(false);
    outField.setAccessible(false);
    modifiersField.setAccessible(false);

    // Overwrite the SecurityManager:
    System.setSecurityManager(new SecurityManager() {

      private boolean exitAllowed = false;

      @Override
      public void checkExec(final String cmd) {
        throw new SecurityException();
      }

      @Override
      public void checkPermission(final java.security.Permission perm) {
        final String name = perm.getName();
        // You're not allowed to read/write files:
        if (name.equals("setIO") || name.equals("writeFileDescriptor")
            || name.equals("readFileDescriptor")
            || ((perm instanceof FilePermission) && name.startsWith("/proc/self/fd/"))) {
          throw new SecurityException();
        }
        // You're not allowed to overwrite the Security settings:
        if (name.equals("setSecurityManager") || name.equals("suppressAccessChecks")) {
          throw new SecurityException();
        }
        // You're not allowed to use reflection anymore:
        if (name.equals("getModifiers") || name.equals("get") || name.equals("set")
            || name.equals("setBoolean") || name.equals("setByte")
            || name.equals("setChar") || name.equals("setShort") || name.equals("setInt")
            || name.equals("setLong") || name.equals("setFloat") || name.equals("setDouble")
            || name.equals("setFieldAccessor") || name.equals("setFieldAccessor")) {
          throw new SecurityException();
        }
        // When you try to leave the current VM it will stop the program:
        if (name.startsWith("exitVM") && !this.exitAllowed) {
          this.exitAllowed = true;
          System.exit(0);
        }

        // You know what, nothing is allowed!
        throw new SecurityException("Mhuahahahaha!");
      }
    });
  }

  public static void main(String[] args) {
    // Overwritting all given arguments:
    args = new String[0];

    // Exit the program before you can do anything!
    System.exit(0);
  }
}

// Your code goes below:

এখানে চেষ্টা করুন। (টিআইওর পরিবর্তে আইডিয়োন ডট কম, যেহেতু এটি সেখানে কাজ করে না বলে মনে হচ্ছে .. এক্সিলিপ আইডিইতে পরীক্ষা নেওয়া হয়েছে, তবে আমার আদর্শ সমাধান কাজ করে যদি আপনি আদর্শ ডটকম ব্যবহার করেন)



1

জেলি: ক্র্যাকড

এটি হুইট উইজার্ডের দুর্দান্ত পাইথন উত্তরের তুলনায় অত্যন্ত সহজ হবে, তবে আমরা এখানে যাচ্ছি: পি

“for c in code_page:
 if c in atoms:atoms[c].call=None”ŒVø<insert code snippet here>

প্রথম স্নিপেট সহ আমার কাজের সমাধানের sha256 হেক্সডিজেস্টটি cfeb1e193ad77f66f039c0d6a792a3e4c311490f6412698e019ca1fae10c0e0a

বিঃদ্রঃ

কোডটিতে স্ট্রিং ব্যতীত আপনার কোনও নতুন লাইন নাও থাকতে পারে অন্যথায় এই কোডটি চালানো হবে না, যা এই চ্যালেঞ্জটির উদ্দেশ্যকে পরাস্ত করে।

ক্র্যাকড ডিজেএমসিএমহেম

ন্যায়সঙ্গত হওয়ার জন্য, এটি একটি নতুন লাইন ব্যবহার করে, তাই আমি এমন একটি সমাধান দেখতে চাই যা একটি নিউলাইন ব্যবহার করে না।

জোনাথন অ্যালানের একটি সমাধানও

এটি কোনও নতুন লাইন ব্যবহার করে না, তাই এটি ক্র্যাক হয়ে গেছে। : P: P

আমার সমাধানটি হ'ল:

“for c in code_page:
 if c in atoms:atoms[c].call=None”ŒVø“print(int(input())+int(input()))”ŒV

প্রথম স্নিপেট কেবলমাত্র একক অক্ষর পরমাণু মুছে ফেলে যার অর্থ পাইথন ইভাল এখনও কাজ করে :)))


দ্বিতীয় স্নিপেট সর্বদা প্রথম স্নিপেটের শেষে যুক্ত হয়।
স্টিফেন

@ স্টেপহেন কেবল উল্লেখ করছেন: পি কিন্তু আমি নোটটি যুক্ত করতে ভুলে গেছি; এটা সত্যিই গুরুত্বপূর্ণ।
হাইপারনিউটারিনো

3
আমি মনে করি না আপনি এরকম ডাকাতদের সীমাবদ্ধ করতে পারবেন। আপনি যদি এটি নিউলাইনগুলির সাথে ক্র্যাক করতে পারেন তবে এটি একটি বৈধ ক্র্যাক। নিউলাইনগুলি যুক্ত হতে বাধা দেওয়ার জন্য, বা প্রথম লাইনটি কার্যকর করতে বাধ্য করার মতো কোনও উপায় আছে কি?
ডিজেএমসিএমহেম


1
আমি আপনার উদ্দেশ্য ক্র্যাক পছন্দ। খুব গোপনে।
ডেনিস

1

জাভাস্ক্রিপ্ট, ক্র্যাকড

ইনপুট: prompt()দুবার

আউটপুট: console.log()

আমার সলিউশন jsfizz এ কাজ করে না। গুগল ক্রোমের জেএস কনসোল সহ ফাঁকা পৃষ্ঠাতে কাজ করে:

prompt=console=0

আমার সমাধান:

x=document.createElement("iframe")
x.src="data:text/html,<script>console.log(prompt()-0+(prompt()-0))</script>"
document.body.appendChild(x)

ব্যাখ্যা:

আমি তাদের সমান 0 টি সেট করে প্রম্পট এবং কনসোল সরিয়েছি।

আমার সমাধানে আমি একটি আইফ্রেমে তৈরি করি যা একটি স্যান্ডবক্স তৈরি করে এবং উইন্ডোর একটি নতুন উদাহরণ যেখানে প্রম্পট এবং কনসোলটি সঠিকভাবে কাজ করে।



@ সিআরড্রোস্ট আমি বিশ্বাস করি না যে অনুমানের মধ্যে প্রাথমিকতার পরীক্ষা আছে, এবং আপনি উভয় স্নিপেট দেখান না।
স্টিফেন 21

দুঃখিত, আপনি ঠিক বলেছেন, আমি ভুল পড়েছি।
সি আর Drost

1

জাভা, ক্র্যাকড

import java.lang.reflect.*;
public class Main{
  public static void main(String... args){
    System.setOut(null);
    System.setErr(null);
    /*Your code here*/
  }
}

এই উচিত খুব সহজ ক্র্যাক।

উদ্দিষ্ট সমাধান

import java.lang.reflect.*;
public class Main{
public static void main(String... args){
  System.setOut(null);
  System.setErr(null);
  try{
    Class<?> cistream = Class.forName("java.io.InputStream");
    Class<?> cfostream = Class.forName("java.io.FileOutputStream");
    Class<?> costream = Class.forName("java.io.OutputStream");
    Class<?> cfdescriptor = Class.forName("java.io.FileDescriptor");
    Object sout = cfostream.getConstructor(cfdescriptor).newInstance(cfdescriptor.getField("out").get(null));
    Class<?> csys = Class.forName("java.lang.System");
    Field mod = Field.class.getDeclaredField("modifiers");
    mod.setAccessible(true);
    Field stdout = csys.getField("out");
    mod.set(stdout,Integer.class.cast(mod.get(stdout) )&~ Modifier.FINAL);
    stdout.set(null,Class.forName("java.io.PrintStream").getConstructor(costream).newInstance(sout));
    Class<?> cscanner = Class.forName("java.util.Scanner");
    Object scanner = cscanner.getConstructor(cistream).newInstance(System.in);
    Method nextInt = cscanner.getMethod("nextInt");
    int f = Integer.class.cast(nextInt.invoke(scanner));
    int s = Integer.class.cast(nextInt.invoke(scanner));
    int sum = s + f;
    System.out.println(sum);
  }catch(Throwable t){t.printStackTrace();}
  }
}

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



আমি সম্পূর্ণরূপে ভুলে গেছি java.io.. তবে আপনি যাই হোক না কেন উদ্দেশ্য সমাধানটি পেয়েছেন ..
রোমান গ্রাফ

আমি এখানে কোন সমস্যা দেখছি না। আমি আসলে দ্বিতীয় স্নিপেটটি এটি সম্পাদনা করতে ভুলে গিয়েছিলাম। টিআইও অনুসারে কোনও হুঁশিয়ারি ছাড়াই প্রথম স্নিপপেট কম্পাইল করে।
রোমান গ্রাফ

@ অলিভিয়ারগ্রোগোয়ার সম্পন্ন আমি মনে করি যে কোনও আইডিই আমাকে এর জন্য চিৎকার করবে তবে আমি কমপক্ষে সংকলক এটি গ্রহণ করে ...
রোমান গ্রাফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.