পুনরায় সাজানো হয়েছে ran


14

আপনার টাস্কটি এমন একটি কম্পিউটার প্রোগ্রাম লিখতে হবে যে যখন এটি লাইনগুলিতে কেটে যায় (নিউলাইন চরিত্রের উপর বিভক্ত হয়) লাইনের প্রতিটি ব্যবস্থা 1 এবং n এর মধ্যে পৃথক সংখ্যাকে আউটপুট দেয় ! (যেখানে n মোট রেখার সংখ্যা)। কোনও সংখ্যা দুটি পৃথক ব্যবস্থা দ্বারা আউটপুট হওয়া উচিত নয় এবং প্রতিটি বিন্যাস এই ব্যাপ্তিতে একটি সংখ্যা আউটপুট করা উচিত। যেহেতু এন আছে! কোনও প্রোগ্রামের লাইনগুলি সাজানোর উপায়গুলির অর্থ প্রতিটি সংখ্যার একটি পুনর্বিন্যাসের মাধ্যমে আউটপুট হওয়া উচিত।

উদাহরণস্বরূপ পাইথন প্রোগ্রাম

print 1;"""
print 2;"""

দুটি ব্যবস্থা আছে

print 1;"""
print 2;"""

এবং

print 2;"""
print 1;"""

প্রথম আউটপুট 1এবং দ্বিতীয় আউটপুট 2

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

স্কোরিং

আপনার স্কোরটি উচ্চতর স্কোর আরও ভাল হওয়ার সাথে আপনার প্রোগ্রামের লাইনের সংখ্যা হবে। আপনি চাইলে 0 থেকে n! -1 পর্যন্ত আউটপুট নম্বর চয়ন করতে পারেন।


3
যে উত্তরগুলি যে কোনওটির জন্য কাজ করে এমন উত্তরগুলি সম্পর্কে কী বলা যায় n? তারা সবাই কি ∞ এর স্কোর এ বাঁধা?
মার্টিন এন্ডার

নিবন্ধন করুন একটি দুর্দান্ত স্কোর। যদি আপনি এর মতো কোনও নির্মাণ খুঁজে পান তবে আপনি জিতবেন।
পোস্ট রক গার্ফ হান্টার

@ অ্যাডমবার্কবার্ক হ্যাঁ প্রতিটি ব্যবস্থাতে একটি সংখ্যা আউটপুট করা উচিত। এটা কি আরও পরিষ্কার হতে পারে?
পোস্ট রক গারফ হান্টার

1
@ টোটালিহুমান স্ট্যান্ডার্ড আউটপুট নিয়ম করুন আপনি যে কোনও ভাষা ব্যবহার করছেন। আমি সম্পূর্ণ আপডেট হতে প্রশ্ন আপডেট করব।
পোস্ট রক গার্ফ হান্টার

1
পুনঃটুইট করেছেন মার্টিন সিজেমে অসীম স্কোর করার কোনও উপায় খুঁজে পেয়েছে তবে চেষ্টা করার মতো আরও অনেকগুলি ভাষা রয়েছে।
পোস্ট রক গারফ হান্টার

উত্তর:


7

সিজেএম , স্কোর: ∞

প্রতিটি লাইন ফর্ম হয়

];Lx+:L{__(f<0+:+\,,(;1+:**\(;}h]:+

যেখানে xথেকে একটি সংখ্যা 0থেকে n-1। ফলাফলের সীমার মধ্যে রয়েছে 0করতে n!-1

এটি অনলাইন চেষ্টা করুন! (জন্য n=3।)

কোডটির জন্য জিমি 23013 এর ক্রেডিট যা আসল অনুমান সূচককে গণনা করে। আমি কেবল সেই বিটটি প্রতিস্থাপন করেছি ];Lx+:Lযা পূর্ববর্তী লাইন থেকে ফলাফলটি বাতিল করে দিয়ে ইনপুটটি পড়ে এবং তারপরে বর্তমান লাইনের সূচকটি ভেরিয়েবলের সাথে যুক্ত করে L(যা প্রাথমিকভাবে খালি অ্যারে) is


ওহ, আমি এটি লিখেছিলাম। তবে এটি গোল্ফ লাগছে না ... (উদাহরণস্বরূপ 0+:+) আমি মনে করি আপনি ব্যবহার করে আরও সংক্ষিপ্ত সংস্করণ পেতে পারেন ,m!#
jimmy23013

4

পার্ল: ∞

$z.="-1,";$_.=A;END{$m.=!!s/./{${z}B}/g,map(/B/||s/\d+\K/,/g*/(-\d*,).*\1/||($n{$_}||=$m++),sort glob),print$n{$z}if/A/}
$z.="-2,";$_.=A;END{$m.=!!s/./{${z}B}/g,map(/B/||s/\d+\K/,/g*/(-\d*,).*\1/||($n{$_}||=$m++),sort glob),print$n{$z}if/A/}
$z.="-3,";$_.=A;END{$m.=!!s/./{${z}B}/g,map(/B/||s/\d+\K/,/g*/(-\d*,).*\1/||($n{$_}||=$m++),sort glob),print$n{$z}if/A/}

আপনার পছন্দ মতো দৈর্ঘ্যে প্রসারিত করুন

মেমরির ব্যবহার ও (n ^ n) এর মতো হওয়ায় দ্রুত মেমরি ফুরিয়ে যাবে। তবে আরও দীর্ঘতর ও (এন) কোড দ্বারা অনুমানের সূচককে প্রতিস্থাপন করা সহজ হবে। END{}এই কাজের জন্য আপনি যেভাবে পার্ল ব্যবহার করতে পারবেন তা আমি কেবল চিত্রিত করছি । সমস্ত END{}ব্লকগুলি প্রস্থান করার সময় চলতে থাকে, তবে কেবলমাত্র প্রথমটি যে কল হয় (কোডের মধ্যে একটি শেষ) /A/পরীক্ষার কারণে যে কোনও ফলাফল আউটপুট দেয় যা কেবল একবারেই সত্য is

লক্ষ্য করুন যে $mকাউন্টারটিকে স্ট্রিং হিসাবে গণনা করতে হবে কারণ একটি সংখ্যা হিসাবে এটি উপচে পড়বে (মহাবিশ্বের শেষের চেয়ে পরে তবে এটি নীতিটি গণনা করে)। একই কারণে আমি Aএকটি সত্যিকারের কাউন্টার ব্যবহার না করে স্ট্রিং তৈরি করে লাইনের সংখ্যা "গণনা" করি যদিও এই ওভারফ্লো আরও পরে ঘটবে।

পার্লে এটি করার আর একটি উপায়:

@{$b.=A; if($a eq $b) {use bigint; $n=0;$n++for@F;$c=0;$c=$c*$n--+map{$z=$_;$a=grep$_&&$_>$z,@F;$_=0;}@F;print$c}}=()x push@F,"1".!($a.=A),
@{$b.=A; if($a eq $b) {use bigint; $n=0;$n++for@F;$c=0;$c=$c*$n--+map{$z=$_;$a=grep$_&&$_>$z,@F;$_=0;}@F;print$c}}=()x push@F,"2".!($a.=A),
@{$b.=A; if($a eq $b) {use bigint; $n=0;$n++for@F;$c=0;$c=$c*$n--+map{$z=$_;$a=grep$_&&$_>$z,@F;$_=0;}@F;print$c}}=()x push@F,"3".!($a.=A),

এটি সেই সত্যটি ব্যবহার করে যা foo = bar barপরে কার্যকর করা হয় foo। যাইহোক এই সংস্করণটি সময় এবং জায়গাতে পাগল হয় না তবে কোডটি আরও দীর্ঘ করে দেয়

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

push@F,"1";bless\@F;DESTROY{print"Work out permutation index of @{$_[0]}\n" }
push@F,"2";bless\@F;DESTROY{print"Work out permutation index of @{$_[0]}\n" }
push@F,"3";bless\@F;DESTROY{print"Work out permutation index of @{$_[0]}\n" }

বা ব্যবহার BEGIN:

BEGIN{push@F,"1"} print"Work out permutation index of @F\n"; exit;
BEGIN{push@F,"2"} print"Work out permutation index of @F\n"; exit;
BEGIN{push@F,"3"} print"Work out permutation index of @F\n"; exit;

3

জেলি , ∞

;3ÇQŒ¿$⁼Q$?
;2ÇQŒ¿$⁼Q$?
;1ÇQŒ¿$⁼Q$?

(উদাহরণস্বরূপ n=3।)

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

23 13 প্রতি লাইনে 11 বাইট।

nলাইন সহ একটি প্রোগ্রামের জন্য , লাইনগুলির ফর্ম্যাট থাকবে

; <i> ÇQŒ¿$⁼Q$?

যেখানে <i>সংখ্যা আক্ষরিক প্রতিনিধিত্ব করে iএবং প্রতিটি লাইন জন্য একটি ভিন্ন মূল্য আছে iছোটো থেকে 1থেকে n। ( iপ্রকৃত মানগুলির জন্য এই নির্দিষ্ট সংখ্যক হওয়া উচিত নয়, তাদের কেবল অনন্য ধনাত্মক মান থাকতে হবে)) এই প্রোগ্রামটি আর nলাইন কাঠামোতে ব্যবহার করে না।

কিভাবে?

  • কোনও যুক্তি ছাড়াই জেলি শুরু করে 0
  • ;1appends 1করতে 0বা সক্রিয় তালিকা।
  • ⁼Q$যদি বিবৃতি ( ?) এর শর্তসাপেক্ষ মোনাড হয় যা তালিকার উপাদানগুলি অনন্য কিনা তা পরীক্ষা করে। যদি সেগুলি হয় তবে উপরের লিঙ্কটি ( Ç) বলা হয় এবং অন্য একটি নম্বর তালিকায় যুক্ত হয়। যদি সেগুলি অনন্য না হয় তবে এর অর্থ আমরা প্রথম লিঙ্কটি প্রায় গুটিয়ে রেখেছি। পুনরাবৃত্ত উপাদান তালিকা ( Q) থেকে সরানো হয়েছে এবং আদেশের সূচি খুঁজে পাওয়া যায় ( Œ¿)। নোট করুন যে 0যখন Œ¿নেওয়া হবে তখন তালিকার শুরুতে এটি রয়েছে তবে মানগুলি iসমস্ত ধনাত্মক হওয়ার কারণে এটি আউটপুটকে প্রভাবিত করে না ।

নতুন জেলি বৈশিষ্ট্য

নতুনভাবে যুক্ত হওয়া Ƒদ্রুত সঙ্গে, আমরা একটি বাইট সংরক্ষণ করতে হ্রাস ⁼Q$করতে পারি

10 বাইট / লাইন (একক অঙ্কের জন্য)

;1ÇQŒ¿$QƑ?

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


2

মস্তিষ্ক-ফ্লাক , ৩

(({}){})
({}())
(()(){([()()]{})()(){[()()](<{}>)}}{})

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

আমি এটি আগে আড্ডায় পোস্ট করেছি তবে আশা করি এটি এখানে পোস্ট করে লোকেরা এটিকে তৈরি করতে পারে।

ব্যাখ্যা

আমরা বেসিক প্রোগ্রাম দিয়ে শুরু করি

(({}){})
({}())

এটি নিজের স্কোর 2। পরবর্তী স্তরে পদক্ষেপ নিতে আমি একটি নতুন লাইন যুক্ত করতে চাই। আমার সূচনা অনুমান ছিল

(()(){[()()]{}(<()>)}{})

এটি 2শূন্য হয় এবং অন্যথায় কিছু না করে এই শঙ্কাকে সেট করে । এটি আসলে একটি ভাল শুরু। অন্য দুটি লাইন সঙ্গে আমরা সমস্ত নম্বর থেকে পেতে সক্ষম 1করার জন্য 6ছাড়া 4, কারণ আছে 2আউটপুট উপায়ে 2:

({}())
(({}){})
(()(){[()()]{}(<()>)}{})

এবং

({}())
(()(){[()()]{}(<()>)}{})
(({}){})

এর প্রতিকারের জন্য আমরা আমাদের লাইনটিও সেট 2করে রেখেছি 4। এটি দিয়ে করা যেতে পারে

(()(){([()()]{})()(){[()()](<{}>)}}{})

স্পষ্টতার জন্য এটি মূলত হাস্কেল ফাংশনটি প্রয়োগ করে

f 0 = 2
f 2 = 4
f x = x

এটি আমাদের সমস্যা সমাধান করে কারণ আগে যে প্রোগ্রামগুলির 2আউটপুট ছিল তার মধ্যে একটি এখন 4অন্য কোনও প্রোগ্রাম পরিবর্তন না করে ফলাফল আউটপুট করে।


2

জাভা 7, স্কোর: ∞

public class DerangedRearrangements implements B{public void a(){System.out.println("0");}public static void main(String[]a)throws Exception{java.util.regex.Pattern p=java.util.regex.Pattern.compile("^(?:public )?class ([\\w]+).*");java.io.BufferedReader r=new java.io.BufferedReader(new java.io.FileReader("./DerangedRearrangements.java"));String line; while((line=r.readLine())!=null){java.util.regex.Matcher m=p.matcher(line);if(m.matches()){((B)Class.forName(m.group(1)).getDeclaredConstructor().newInstance()).a();}}}}interface B{void a();}
class b1 implements B{public void a(){System.out.println(getClass().getName().substring(1));}}

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

এই প্রিন্ট আউট করতে পারেন 0 থেকে এন! -1 । অতিরিক্ত লাইনগুলি নিম্নোক্ত বিন্যাসের (যেখানে INDEX 1 থেকে n! -1 পর্যন্ত একটি সংখ্যা ):

class b<INDEX> implements B{public void a(){System.out.println(getClass().getName().substring(1));}}

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

এটি কীভাবে কাজ করে (উচ্চ স্তরের):

লাইন দ্বারা নিজস্ব উত্স কোড লাইন পড়ে Read যেহেতু প্রতিটি লাইন একটি নতুন শ্রেণী ঘোষণা করে, তাই আমরা নতুন শ্রেণীর একটি উদাহরণ তৈরি করতে প্রতিবিম্বটি ব্যবহার করি এবং এটির aপদ্ধতির জন্য অনুরোধ করি কারণ এটি Bইন্টারফেস প্রয়োগ করে ।


1

রুবি , স্কোর: ∞

(a||=[])<<2;a.size<3?0:(p 1+a.sort.permutation.to_a.index(a))
(a||=[])<<1;a.size<3?0:(p 1+a.sort.permutation.to_a.index(a))
(a||=[])<<3;a.size<3?0:(p 1+a.sort.permutation.to_a.index(a))

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

এই প্রোগ্রামটিতে প্রতি লাইনে 61 বাইট রয়েছে (এন <10 এর জন্য)। এটি dylnan এর সমাধান হিসাবে একই বেসিক ফর্ম্যাট আছে ; প্রতিটি লাইনের প্রথম সংখ্যাটি একটি পৃথক মান 1এবং এর মধ্যে হবে এবং nপ্রতিটি লাইনের দ্বিতীয় সংখ্যা হবে n

আমি nপ্রোগ্রামটিতে অন্তর্ভুক্ত না হওয়ার উপায় খুঁজে পাওয়ার আশা করছিলাম , তবে আমি একটিও পাইনি।


1

জন্য 2আপনি ব্যবহার করতে পারেন ({}())এবং (({}){})
পোস্ট রক গার্ফ হান্টার

@ ওয়েট উইজার্ড প্রসারণযোগ্য ফর্ম্যাট তৈরি করার চেষ্টা করছে
ক্রিস্টোফার

0

05 এ বি 1 ই , স্কোর: 1,114,112

0ˆ¯JD{œsk
1ˆ¯JD{œsk
2ˆ¯JD{œsk

এটি অনলাইন চেষ্টা করুন! 0-ইন্ডেক্স। প্রতিটি লাইনের শুরুতে global পৃথক অক্ষরকে বৈশ্বিক অ্যারেতে ঠেলে দেয়। কোডটির বাকী অংশটি শেষ লাইনে ব্যতীত নির্বাহ করা হয়, যেখানে এটি মানগুলিকে স্ট্রিংয়ে রূপ দেয়, তারপরে তার অনুক্রম সূচকটি সন্ধান করে। 1,114,112 হ'ল লেখার সময় ইউনিকোডের সম্ভাব্য অক্ষরের সংখ্যা (কোড পয়েন্ট 48-57 কোর্সের সাথে প্রদর্শন করা সবচেয়ে সহজ)।

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