একটি রিবুট জুড়ে একটি স্ট্রিং ধরে রাখতে আপনার ভাষায় সংক্ষিপ্ততম কোড


48

আপনার প্রোগ্রাম:

আপনি দুটি প্রোগ্রাম লিখবেন (উভয় একই ভাষায়)। স্টোরেজ প্রোগ্রামটি STDIN এর থেকে একটি স্ট্রিং নেয় এবং এটিকে কোথাও স্থির রাখে (নীচে দেখুন) এবং পরে ত্রুটি ছাড়াই প্রস্থান করে its পুনরুদ্ধার প্রোগ্রামটি কোনও ইনপুট নেয় না, সঞ্চিত স্ট্রিংটি পুনরুদ্ধার করে এবং এটি STDOUT এ মুদ্রণ করে।

অধ্যবসায়ের উদ্দেশ্য পরীক্ষা:

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

পরীক্ষার কেস:

স্টোরেজ তারপর পুনরুদ্ধার:

echo foo | Store
Retrieve
foo

পুনরাবৃত্তি স্টোরগুলি ওভাররাইট করা উচিত (একটি সেট (পদ্ধতির মতো):

echo foo | Store
echo bar | Store
Retrieve
bar

পুনরাবৃত্তি পুনরুদ্ধার অ-ধ্বংসাত্মক (একটি গেট () পদ্ধতির মতো):

echo foo | Store
Retrieve
foo
Retrieve
foo

যেকোন স্টোরেজ আহরণের আগে পুনরুদ্ধার:

আপনার এই সম্পর্কে চিন্তা করার দরকার নেই। আপনার পুনরুদ্ধার প্রোগ্রামটি ধরে নিতে পারে যে স্টোরেজ প্রোগ্রামটি অতীতে কোনও সময়ে চালিত হয়েছিল।

ইনপুট / আউটপুট নমনীয়তা।

লোকেরা আমাকে কঠোর STDIN / STDOUT থেকে স্ট্যান্ডার্ড আইও নিয়মে প্রসারিত করতে বলেছে। আমি এটি করতে পারি না কারণ এটি অনেকগুলি লফোলগুলি উপস্থাপন করবে। কিছু মানক IO বিকল্পের মধ্যে ইতিমধ্যে অবিচ্ছিন্ন উপায়ে ইনপুট সঞ্চিত রয়েছে, যেমন "প্রোগ্রামগুলি কোনও ফাইল থেকে ইনপুট নিতে পারে"। আমি কেবল কঠোর STDIN এবং STDOUT এর চেয়ে আরও নমনীয় হতে চাই, তবে প্লাবনগাড়িগুলি না খোলায়।

স্ট্যান্ডার্ড আইও নিয়মের থ্রেড থেকে আমি চেরি-বাছাই করছি যা চ্যালেঞ্জটি ভঙ্গ করে না:

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

অনুমোদিত অনুমান:

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

এটি কোড-গল্ফ এবং আপনার স্কোর উভয় প্রোগ্রামের বাইটের যোগফল।


9
তাই ঠিক echo $@>xএবং cat xবৈধ?
অ্যাডম

1
আপনার অনুমানে একাধিকবার সঞ্চয় করার ক্ষমতা উল্লেখ করা হয়নি, তবে আপনার এমন উদাহরণ রয়েছে যা এটি করে does আমরা প্রতিটি আহবান জন্য একটি পরিষ্কার পরিবেশ অনুমান করতে পারি Store?
অ্যাডম

4
@ এরিকথ আউটগল্ফার কেন এটি বৈধ হবে না? এমনকি মেটা নিয়ে আলোচনা করা এমন একটি লুফোল রয়েছে যা কোনও চ্যালেঞ্জকে বিশেষভাবে অনুমতি দেওয়া থেকে বাধা দেয় না।
dylnan

6
ওয়েব সীমাবদ্ধতাগুলি সাধারণত সেই জিনিসটি তৈরির কাজটি থেকে বেরিয়ে আসার জন্য ওয়েবে থেকে স্টাফগুলি টানতে হয়। এই ক্ষেত্রে, এটি ওয়েবে থাকলে এটি এটি কারণ আপনি এটি সেখানে রাখার কাজটি করেছেন।
জ্যারেড কে

3
চৌম্বকীয় কোর মেমরিযুক্ত কম্পিউটারের জন্য কারও একটি উত্তর লিখতে হবে।
চিহ্নিত করুন

উত্তর:


88

zsh, 4 বাইট

স্টোর: >f(এসটিডিআইএন থেকে পড়ে এবং একটি ফাইলে লেখেন f)
পুনরুদ্ধার করুন: <f( এসটিডিআউটে লিখিত সামগ্রীগুলি লিখেছেন f)


8
আমি মনে করি আমাদের বিজয়ী আছে।
অ্যাডম

@ অ্যাডাম না থাকলে 1 বাইটে ফাইল ইনপুট লেখার টোকেন না থাকলে: পি
ফ্রিজেফিনিক্স

1
@ ফ্রিজফোনিক্স আপনি এখনই নতুন ভাষা না লিখলে সম্ভবত কিছু নেই যা এখনই অনুমোদিত নয় ...
ক্রোমিয়াম

4
@ ক্রোমিয়াম জেড 80 উত্তর পরীক্ষা করে দেখুন: কিছু বিদ্যমান ভাষা 0 বাইট প্রোগ্রাম থেকে লিখতে পারে।
সিউর

55

টিআই-বেসিক (জেড 80), 1 বাইট ?

স্টোর:  (কেবল স্ট্রিং প্রবেশ করান)
পুনরুদ্ধার করুন: Ans(27 বাইট)

তবে যদি তা বৈধ না হয়:

টিআই-বেসিক (জেড 80), 7 6 বাইট

-1 জাকোবকে ধন্যবাদ।

স্টোর: Prompt Str0(বাইটস ডিডি এএ 09)
পুনরুদ্ধার করুন: disp Str0(বাইটস ইডি এএ 09)


1
আপনি কি নিশ্চিত যে এটি 5 বাইট?
ফ্রিজফোনিক্স

6
@ ফ্রিজফোনিক্স টিআই-বেসিক টোকেন ব্যবহার করে।
অ্যাডম

3
হুঁ ... কেন Ansএকই বৈকল্পিকের মাধ্যমে ইনপুট নেওয়া এবং চালিয়ে দেওয়া উচিত নয়? একটি খালি স্টোর প্রোগ্রাম এবং কেবল Ansপুনরুদ্ধারের জন্য কাজ করা উচিত: 1 বাইট!
জাকব

9
@ আর্থার ইয়েপ, অবিরত রয়েছে Ans। আসলে, সমস্ত ব্যবহারকারীর ভেরিয়েবল, সমীকরণ এবং ইতিহাস সহ (আমার মনে হয়) অনেকগুলি রাষ্ট্র স্থায়ী। ব্যবহারকারীর দৃষ্টিকোণ থেকে, চালিত বন্ধটি মূলত একটি পিসির জন্য ঘুমের রাজ্যের সমতুল্য টিআই ক্যালকুলেটর, তাই এটি খুব বেশি ব্যাঘাত ঘটায় না।
জাকোব

2
@ জ্যারেডকে আমি অবশ্যই একমত যে 1-বাইট সমাধানটি নিয়মের অপব্যবহারের গন্ধ পাচ্ছে (যদিও আমি এর পরামর্শ দিয়েছিলাম)। তবে, আমি বলব যে স্টোর প্রোগ্রামটি প্রস্থান করে, যেহেতু অন্যান্য প্রোগ্রামগুলি এর পরে চালানো যেতে পারে (যদিও তারা সমাধানটির অপারেশনে হস্তক্ষেপ করে)। আপনার "অধ্যবসায়ের উদ্দেশ্যমূলক পরীক্ষা" সম্পর্কে আমার ব্যাখ্যাটি ছিল যে বিদ্যুৎ চক্রের আগে এবং পরে সরাসরি প্রোগ্রামগুলি চালানো হত। যদি এটি ভুল হয়, সম্ভবত আপনার 1-বাইট সমাধানটি ননকম্পটিং হিসাবে চিহ্নিত করার প্রয়োজন হতে পারে?
Jakob

23

ব্রাউজার জেএস, 44 বাইট

স্টোর :

localStorage.a=prompt()

পুনরুদ্ধার :

alert(localStorage.a)

হবে prompt()stdin থেকে পড়া?
পাইপ

9
গ্রাফিক্যাল ওয়েব ব্রাউজারে কি একটি স্টাডিন রয়েছে? নং prompt()একটি সতর্কতা পপ আপ করে যা আপনাকে পাঠ্য প্রবেশ করানোর জন্য জিজ্ঞাসা করে, এবং ফলাফলটি দেয়।
দেব

5
@ দেব অবশ্যই একটি গ্রাফিকাল ওয়েব ব্রাউজারে অন্য প্রতিটি প্রক্রিয়ার মতোই একটি STDIN থাকে। আপনি যদি কোনও নির্দিষ্ট ভাষা থেকে এটি ব্যবহার করতে না পারেন তবে অন্য প্রশ্ন এবং যদি উত্তরটি "না" হয়, তবে আমি সম্ভবত এটি এই চ্যালেঞ্জটিতে ব্যবহার করতে পারি।
পাইপ

5
@ দেভ ডিফল্ট I / O পদ্ধতিতে জিইউআই প্রম্পটের মাধ্যমে ইনপুট এবং জিইউআই প্রদর্শনের মাধ্যমে আউটপুট অন্তর্ভুক্ত রয়েছে । ওপিকে স্ট্যান্ডার্ডকে ওভাররাইড না করা পর্যন্ত এটি বৈধ হওয়া উচিত। আমি স্পষ্ট করব।
16

2
আমি আরও আইও অনুমোদনের চ্যালেঞ্জটি সম্পাদনা করেছি, তবে আমি কেবল এটি ডিফল্ট আইও পদ্ধতিগুলির একটি সীমিত উপসেটে প্রসারিত করছি। এই উত্তরটি যদিও আমার সাবসেটের মধ্যে রয়েছে। আমি এটা পছন্দ করি.
জ্যারেড কে

19

পসিক্স শেল শ / বশ / ... 8 বাইট

দোকান:

dd>f

পাওয়া:

dd<f

2
দুর্দান্ত এক, এমনকি cat
মারও

12

পাইথন 3 , 46 বাইট

স্টোর, 45 বাইট:

open(*'fw').write('print(%r)'%open(0).read())

পুনরুদ্ধার প্রোগ্রামটি স্টোর কমান্ড দ্বারা নির্মিত, নামের একটি ফাইল f। ( ফাইলের নামের জন্য 1 বাইট )


2
অবশ্যই আপনি ব্যবহার করতে পারেন input()?
আর্টেমিস ফাউল 21

@ আর্টেমিসফাউল input()কেবল প্রথম নিউলাইন পর্যন্ত গ্রহণ করে। এসটিডিএনopen(0).read
জো কিং

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

@ জারেডকে আমি মনে করি না যে এটি কীভাবে কাজ করে আপনি যথেষ্ট পান। store-গ্রামটি এসটিডিএন থেকে ইনপুট পড়ে এবং তারপরে একটি পাইথন প্রোগ্রাম সঞ্চয় করে যা এই ইনপুটটিকে প্রিন্ট করে f। উদাহরণ: স্টোরকে ইনপুট দিয়ে ডাকা হয় abc। তখনই লিখেছেন print('abc')করতে f। আপনি যদি এখন f(পুনরায়) কল করেন তবে এটি abcSTDOUT- এ প্রিন্ট করে।
ovs

@ জারেদেকে আমি আপনাকে একটি মন্তব্যে জিজ্ঞাসা করেছি যে স্টোরের পক্ষে পুনরায় পরিবর্তন সংশোধন করার অনুমতি দেওয়া হয়েছে কিনা।
ovs


8

পাওয়ারশেল - 4 বাইট

সঞ্চয় স্থান:

ac

(বিকল্প এছাড়াও sc)

উদ্ধার

gc

সম্পাদনা: আমি কেবল লক্ষ্য করেছি আউটপুটটিতে কোনও ব্যবহারকারীর ইনপুট অনুমোদিত নয় ... সুতরাং এটি 4 থেকে 6 বা 8 বাইটে লাফিয়ে যায়

সঞ্চয় স্থান:

ac f

(বিকল্প এছাড়াও sc f) 8 বাইট সংস্করণ জন্য

ac

(এবং fপথ হিসাবে নির্দিষ্ট করুন ) 6 বাইট সংস্করণের জন্য Version

উদ্ধার

gc f

8

মরিচা, 136 বাইট

স্টোর (৮৪ বাইট)

use std::{fs::*,io::*};

||{let mut v=vec![];stdin().read_to_end(&mut v);write("a",v)}

পুনরুদ্ধার (52 বাইট)

||print!("{}",std::fs::read_to_string("a").unwrap())

প্রাপ্তি স্বীকার


1
আপনি আমদানি পরিবর্তন করে use std::{io::*,fs::*}এবং তার writeপরিবর্তে ব্যবহার করে একটি বাইট সংরক্ষণ করতে পারেন std::fs::write
এসোলং ফল

কীভাবে write("a",String::from_iter(stdin().chars()))?
বার্গি

@ বার্গি নিস কিন্তু স্থিতিশীল মরিচায় charsট্রিগার error[E0658]: use of unstable library feature 'io'করে।
জ্যাকব

হুঁ, মনে chars()হচ্ছে এটি অনুকৃত হয়ে গেছে String::from_utf8(stdin().bytes())। (এছাড়াও আমি রাতের ডক্স ব্যবহার করেছি, এটিই অপরাধী কিনা তা নিশ্চিত নয়)
বার্গি

@ বেরগি আমি এর সাথে কয়েকটি প্রকরণের চেষ্টা করেছি bytes()বা এর মধ্যে কোনওটি chars()খুব কম ছিল না কারণ পুনরাবৃত্তকারী আইটেমটি মোড়ানো রয়েছে io::Result
7:48 এ ফলসকে এলোং করছে

8

ব্যাশ, 12 11 10 বাইট

দোকান, 7 6 5 বাইট

cat ->f# দরকার নেই -, স্টিডিন ডিফল্ট

cat >f# জায়গার দরকার নেই, >পাশাপাশি পৃথকও হবে

cat>f

পুনরুদ্ধার, 5 বাইট

cat f

1
-স্টোর প্রোগ্রামে কোনও প্রয়োজন নেই ।
কনরাড রুডল্ফ

2
"বিড়াল" এবং ">" এর মধ্যে জায়গার দরকার নেই!
স্মৃতি 14

আপনার লেখার ও ব্যবহারের জন্য zsh পোস্টের মতো একই কাজ করতে সক্ষম হওয়া উচিত >f। যদিও আমি <fপড়ার জন্য বৈধ কিনা তা নিশ্চিত নই ।
08 এলো

@allo Cygwin উপর অন্তত, >fমত কাজ echo '' > f(ফাইল খালি যদি উপস্থিত থাকে, তৈরি যদি এটা করে না), যখন <fকোন সমিতি মনে করা হয়।
সুন্দরের

7

এইচপি 49 জি আরপিএল, 48 বাইট

সংরক্ষণ করার জন্য :2: A DUP PURGE STO:, 26.5 বাইট

পুনরুদ্ধার করতে :2: A RCL:, 21.5 বাইট

আমরা যদি ব্যাকআপ ব্যাটারিতে ছেড়ে যেতে পারি তবে আমরা পাই:

এইচপি 49 জি আরপিএল, 0 বাইট

সংরক্ষণ করতে :, 0 বাইট

পুনরুদ্ধার করতে :, 0 বাইট, যেহেতু এইচপি 49 জি স্ট্যাকটি রিবুটগুলি জুড়ে রেখে দেয়।


শূন্য-বাইট সমাধানটি বিভিন্ন ক্যালুক্লেটারের জন্য কাজ করা উচিত। আমি বাড়ি ফিরলে আমার 42 বছরের বাচ্চা বের করে দেব।
সাইনস্ট্যাকএফএল্ট

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

@ জারেডকে প্রশ্নটি কখনই স্থির করেনি যে দুটি প্রোগ্রাম একরকম হতে পারে না। প্রস্থানের অংশ হিসাবে: traditionতিহ্যগতভাবে RPL ইনপুটগুলিতে স্ট্যাকগুলিতে দেওয়া হয়। যে হয় মান ইনপুট।
জেসন

1
স্ট্যাকটি একটি বিদ্যুত্চক্রটি বেঁচে থাকবে? ক্যালকুলেটরের বোতামগুলির মাধ্যমে কোনও নরম পাওয়ার-অফ হয়ে যেতে পারে তবে আমি মনে করি ব্যাটারিটি সরিয়ে নেই। সুতরাং সম্ভবত এটি নির্ভর করে একটি শক্তি চক্র কী।
ব্যবহারকারী

1
@ ব্যবহারকারী না, স্ট্যাকটি নরম (ওএন + সি) বা হার্ড রিসেট (ওএন + এ + এফ) থেকে বাঁচবে না (সফট-পাওয়ার অফ, রাইট শিফট + অন থেকে আলাদা), পোর্ট 2-এ সংরক্ষণের পরিবর্তে ফ্ল্যাশ মেমরি ( এবং নরম এবং হার্ড রিসেট থেকে বেঁচে থাকে)। যেহেতু টিআই-বেসিক উত্তরটি সেই সংজ্ঞাটি ব্যবহার করে বলে মনে হয়েছিল আমি সম্পূর্ণতার জন্য স্ট্যাক উত্তরটি অন্তর্ভুক্ত করেছি।
জেসন

6

এপিএল (এপিএলএক্স) , 5 বাইট

স্টোর: ⍞⍈1
পুনরুদ্ধার:⍇1

 স্ট্যান্ডিন থেকে
⍈1 ফাইল নম্বর 1 এর পরবর্তী উপলব্ধ উপাদানটিতে লাইন পান

⍇1 পড়া প্রথম ফাইল নম্বর 1 * গত উপাদান

এপিএলএক্স স্টোর সেশনএপিএলএক্স সেশন পুনরুদ্ধার করুন

* ডকুমেন্টেশন প্রথম বলে তবে পরীক্ষাগুলি শেষ হয়


6

বাশ, 10 বাইট (প্রতিদ্বন্দ্বী)

touch $@
ls

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

একইরকম শিরাতে থাকা আরেকটি, যার দৈর্ঘ্য এবং চরিত্রের সীমাবদ্ধতা একই হবে না:

35 33 বাইট

mkdir -p $@
find|sed '$!d;s/..//'

এটি /স্ট্রিংয়ের অক্ষরটিকে মঞ্জুরি দেয় এবং আরও অনেকগুলি অক্ষরকে সমর্থন করে (ঠিক কতটি বাস্তবায়নের উপর নির্ভর করে)।

(-২ বয়েস @ কউজ কোয়াকে ধন্যবাদ জানায়)


1
আইআইআরসি, আমি বিশ্বাস করি যে বার্কলেতে একটি দল একবার 1990 সালে আবার একটি ডাটাবেস সিস্টেম তৈরি করেছিল যা টেবিল কলামের ডেটা ফাইলের নাম হিসাবে সংরক্ষণ করে (255 টি পর্যন্ত অক্ষর)। আমি মনে করি সারি এবং টেবিলগুলি পিতামত্ম ডিরেক্টরি ছিল।
ডেভিড আর ট্রিবিবল

আপনার 35 বাইট উত্তরে, আপনি দ্বিতীয় বিবৃতিতে পরিবর্তন করতে পারেন s/..//$প্রয়োজন বোধ করা হয় না, কারণ সব অন্যান্য লাইন মুছে ফেলা হয় তাই এই শুধুমাত্র গত লাইন আবেদন করতে পারেন, এবং ^কারণ প্রতিকল্পন শুধুমাত্র প্রথম ম্যাচ প্রয়োগ করা হয় বাদ করা যেতে পারে।
ক্রিটসি লিথোস

পুনঃটুইট পরিবর্তনটি কেন কাজ করে তা ব্যাখ্যা করার জন্য ধন্যবাদ।
সুন্দরের

আপনি ব্যবহার করতে হবে "$@"না, $@, হোয়াইটস্পেস দ্বারা পুড়িয়ে পেয়ে এড়াতে *, ?অথবা ~অক্ষর।
অ্যান্ডারস কাসেরগ

5

পাইথন 3, 56 বাইট

স্টোর (৩৩ বাইট)

open(*'aw').write(open(0).read())

পুনরুদ্ধার (23 বাইট)

print(open('a').read())

একটি ট্রেলিং নিউলাইন সহ প্রিন্ট করুন।


কেন না input()পরিবর্তে open(0).read()এবং ফেরত end=থেকে print?
MoxieBall

@ মক্সিবল কেন inputব্যবহার করা হয়নি তা সম্পর্কে নিশ্চিত নন , তবে বাদ দেওয়ার end=ফলে স্ট্রিংয়ের শেষের দিকে (যেমন, মূল স্ট্রিং নয়) যুক্ত হতে পারে (সম্ভবত)

@ নিকা দেখে মনে হচ্ছে যে কোনও নিউলাইন, যাইহোক, প্রশ্নে মুদ্রিত হয়ে যায়, তাই আমি মনে করি না যে বিষয়টি
বিবেচিত

আমি কি পাগল হয়ে গেছি বা 23 + 33 = 56 (54 নয়)? এছাড়াও কেন ব্যবহার input()করবেন না ?
আর্টেমিস ফাউল 21

1
পছন্দ করুন হিসাবে হিসাবে input, আমি ধরে নিই যে স্ট্রিংটি অবিরত রাখতে নতুন লাইনে থাকতে পারে।
জাকব 21

4

জাপট, 46 30 বাইট

-16 বাইট শ্যাগি ধন্যবাদ ।

আমি প্রথমবার জাপট ব্যবহার করার চেষ্টা করেছি। জেএস এভাল কখনও কখনও ফেডজিটি হতে পারে। ব্রাউজার ব্যবহার করে window.localStorage

স্টোর (16 বাইট)

Ox`lo¯lSÈSge.P=U

পুনরুদ্ধার (14 বাইট)

Ox`lo¯lSÈSge.P

আমি পছন্দ করি স্ট্যান্ডার্ড ফাইল ব্যতীত অন্য কিছু ব্যবহার করা প্রথম হওয়ার জন্য এটি +1।
জারেড কে

1
জাপটে স্বাগতম! :)
শেগি

1
যাইহোক, আপনি বাইপাস setItemএবং getItemসম্পূর্ণরূপে সঙ্গে করতে পারেন localStorage.keyসেট মান , মান পুনরুদ্ধার
রোমশ

@ শেগি ধন্যবাদ! আপনার ওয়েয়ার্ড নিয়ন্ত্রণের অক্ষরগুলিও এড়িয়ে চলে।
লিজিয়নম্যামাল 978

4

হাস্কেল, 46 বাইট

স্টোর (26 বাইট):

getContents>>=writeFile"t"

পুনরুদ্ধার (20 বাইট):

readFile"t">>=putStr

3

রুবি (২ By বাইট)

সেট (16 বাইট)

IO.write'a',gets

(10 বাইট) পান

IO.read'a'

3

ম্যাটল্যাব (30 বাইট)

সেট (22 ​​বাইট)

a=input('','s');save a

এতে পরিবর্তন করে 4 বাইট input('')ছাঁটাই করতে পারে তবে এর জন্য একক উদ্ধৃতিতে ইনপুট লাগবে:'input string'

(8 বাইট) পান

load a;a

3

সি (জিসিসি), 98 বাইট

স্টোর (46 বাইট)

ইনপুটটি প্রথম কমান্ড লাইন আর্গুমেন্টের মাধ্যমে হয়।

main(c,v)char**v;{fputs(v[1],fopen("a","w"));}

পুনরুদ্ধার (52 বাইট)

c,d;r(){for(d=open("a",0);read(d,&c,1);)putchar(c);}

Unportability

  • বেশ কয়েকটি পয়েন্টার ধরণের ফিট থাকতে হবে int

প্রাপ্তি স্বীকার


1
এটির জন্য একটি সি বাস্তবায়ন প্রয়োজন যেখানে কাজটির intঅন্তর্নিহিত ঘোষণার জন্য একটি পয়েন্টার ধরে রাখতে int fopen()পারে। (উদাহরণস্বরূপ সর্বাধিক 32-বিট সিস্টেম, বা gcc -m32আপনি যদি 32-বিট এক্সিকিউটেবল করার জন্য x86-64 এ থাকেন তবে ব্যবহার করুন)) এবং বিটিডাব্লু, আমি লিনাক্স sendfileএবং copy_file_range(2)সিস্টেম কলগুলি ব্যবহার করার চেষ্টা করেছি , তবে তারা কোনও টিটিওয়াই / এ কাজ করে না।
পিটার কর্ডেস

1
যেহেতু আপনি প্রোগ্রামগুলি নয়, ফাংশনগুলি লিখছেন, সম্ভবত আপনি ইনপুট স্ট্রিংটিকে কোনও ফাংশন আর্গ হিসাবে অনুমতি হিসাবে ন্যায্যতা প্রমাণ করতে পারেন fputs(fopen()), এবং read(open(),buf,-1)। (প্রশ্নটি এখন একটি কমান্ড-লাইনটিকে ইনপুট হিসাবে আর্গুমেন্টের অনুমতি দেয়))
পিটার কর্ডেস

লিনাক্স 'স্প্লাইস' ফাংশন একটি পাইপ থেকে একটি ফাইল (এবং তদ্বিপরীত) অনুলিপি করে। যদি স্টিডিন / আউট পাইপ হয় তবে এটি আরও পরামিতিগুলির ব্যয় করে একটি ফাংশন কল সংরক্ষণ করবে।
সিএসএম

2

এপিএল (ডায়ালগ ইউনিকোড) , 18 বাইট

স্টোর: ⍞⎕NPUT⎕A 1 অনলাইনে চেষ্টা করে দেখুন!
পুনরুদ্ধার করুন: ⊃⎕NGET⎕A এটি অনলাইনে চেষ্টা করুন!

 স্টিডিনের কাছ থেকে লাইন পান
⎕NPUT এটি একটি
⎕A বড় ফাইলের মধ্যে বড় হাতের অক্ষরে বলা হয় 1 এবং যদি ফাইলটি বিদ্যমান থাকে তবে ওভাররাইট করুন

 প্রথম অংশটি (উপাত্ত, পরবর্তী অংশগুলি এনকোডিং এবং লাইন সমাপ্তির ধরণ) জাতীয়
⎕NGET ফাইলটি
⎕A বড় হাতের বর্ণমালা পান


2

আর (২ by বাইট)

স্টোর (21 বাইট)

x=readLines('stdin')

লোড (6 বাইট)

cat(x)

এটি কাজ করার জন্য, প্রথম স্ক্রিপ্টটি কমান্ড লাইন বিকল্পের --saveসাথে এবং দ্বিতীয়টির সাথে --restore(যদিও ইন্টারেক্টিভ মোডে এটি প্রয়োজনীয় নয়: এই বিকল্পগুলি ডিফল্ট) ব্যবহার করা উচিত।

এটি 7 বাইট দ্বারা সংক্ষিপ্ত করা যেতে পারে যদি এটি সত্য নয় যে আর-তে একটি বাগ readLineকোনও ইন্টারেক্টিভ মোডে কাজ করা থেকে ডিফল্ট যুক্তিটিকে বাধা দেয় । ইন্টারেক্টিভ মোডে, এটি প্রয়োজনীয় নয় , এবং সমাধানটি কেবলমাত্র 20 বাইট ব্যবহার করে ।


1
আমি মনে করি এটি qসরাসরি ব্যবহার করা আরও কার্যকর হবে , প্রথম প্রোগ্রামটি হবে x=scan(); q("y")এবং দ্বিতীয়টি হয় xবা cat(x)স্ট্রিংগুলি কীভাবে প্রিন্ট করা হয় সে সম্পর্কে আমরা কতটা কঠোর হতে চাই তার উপর নির্ভর করে। স্বাভাবিক কোড গলফ বিধি দ্বারা আপনার কাছে, কমান্ড লাইন আর্গুমেন্ট গণনা হবে যাতে যোগ করার জন্য বাইট --saveএবং --restore(যা আমার তৈয়ার প্রয়োজন নেই)
JDL

@ জেডিএল scanস্বেচ্ছাসেবী বিষয়বস্তুর জন্য কাজ করে না এবং এর scan(w='character')চেয়ে দীর্ঘ হয় readLines()qঅপ্রয়োজনীয় (তবে q('y')কাজ করবে না, আপনাকে এটি বানান করতে হবে yes)। আমি কেবলমাত্র xদ্বিতীয় প্রোগ্রামটিতে ব্যবহার করার কথা ভেবেছিলাম তবে এটি প্রয়োজনীয়তা লঙ্ঘন করবে যতদূর আমি তাদের বুঝতে পারি।
কনরাড রুডল্ফ

1
আপনি ব্যবহার করতে পারেন scan(w=""), আপনার প্রকারটি বানান করতে হবে না, scanএটি নির্দিষ্ট আর্গুমেন্টের ধরণ থেকে অনুমান করবে। আমার জন্য, কিউ ("y") সেভ-প্ররোচিত প্রস্থান হিসাবে কাজ করে তবে সম্ভবত এটি আপনার আর এর সংস্করণে এবং সম্ভবত আপনি আরস্তুডিও ব্যবহার করছেন কিনা তা নির্ভর করে।
জেডিএল

@ জেডিএল scan: ওহ, ঝরঝরে, ডকুমেন্টেশনে এটির উল্লেখ নেই! দুর্ভাগ্যক্রমে scanএখনও কিছু বিশ্লেষণ সম্পাদন করবে যাতে এটি সমস্ত ইনপুট দিয়ে কাজ করে না। যাইহোক, scan('stdin',w='')হিসাবে ঠিক একই দৈর্ঘ্য হতে হবে readLines('stdin')q: আর 3.4.4 বলেছেন "কিউ (" y ") এ ত্রুটি: 'সংরক্ষণ' এর অপরিচিত মান"।
কনরাড রুডল্ফ

আহা, এটি একটি রাস্তুদিও জিনিস - আমি এটি রুস্তুডিওতে এবং টার্মিনালে পৃথকভাবে চেষ্টা করেছি এবং এটি কেবল রাস্তুডিওতে কাজ করেছে।
জেডিএল

2

জাভা (জেডিকে 10) , 204 বাইট

সতর্কতা: যে কোনও জাভা প্রোগ্রামগুলি আপনার ব্যবহারকারীর ব্যবহারের জন্য সংরক্ষণ করেছে এমন কোনও পছন্দগুলি ওভাররাইট করে!

স্টোর, 94 বাইট:

interface S{static void main(String[]a){java.util.prefs.Preferences.userRoot().put("",a[0]);}}

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

১১০ বাইট পুনরুদ্ধার করুন:

interface R{static void main(String[]a){System.out.print(java.util.prefs.Preferences.userRoot().get("",""));}}

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

java S foo
java R
foo

এটি আরগ হিসাবে ইনপুট গ্রহণ করে এবং এটি java.util.prefs দ্বারা সরবরাহকারীর ব্যাকিং- স্টোরটিতে সংরক্ষণ করে কাজ করে । এটি নোডের নামকরণে একটি বাইট সংরক্ষণ করতে ব্যবহারকারীর রুট নোডকে ওভাররাইট করে। আপনি যদি এটি অ-ডিস্ট্রোভেটিভভাবে পরীক্ষা করতে চান, হয় এটি নিক্ষেপকারীর নাম থেকে চালনা করুন বা "" থেকে কীটি নোড নামে পরিবর্তন করুন।


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

ধন্যবাদ! আমি আপনার প্রস্তাবিত সম্পাদনাগুলি করেছি। আমি নিশ্চিত না তবে ল্যাম্বডা এক্সপ্রেশনগুলি এই প্রশ্নের জন্য কাস্টম আইও নিয়ম পূরণ করতে পারে বলে আমি মনে করি না।
জেরেদ কে

ডি ওহ। আপনি ঠিক বলেছেন, আমি এটি সম্পর্কে ভুলে গেছি।
জাকব

2

সি #, 157 বাইট

সেট, 74 বাইট:

class P{static void Main(string[]a){System.IO.File.WriteAllLines("a",a);}}

পান, 83 বাইট:

class P{static void Main(){System.Console.Write(System.IO.File.ReadAllText("a"));}}

-1 ভিজ্যুয়ালমেলন
-২ বাইট ধন্যবাদ লিফডেভেনকে ধন্যবাদ


এর পরে সেই জায়গাটি সরিয়ে ফেলুন "a",, এবং আমার সন্দেহ হয় এটি মারবে :) :)
ভিজুয়ালমেলন

আপনি অন্য বাইটটি ব্যবহার করে WriteAllLinesএবং দ্বিতীয় a
প্যারামটি

2

পার্ল 5, 48 26 23 বাইট

20 + 1 (-n) বাইট লিখুন

-3 বাইট ধন্যবাদ জনতার কাছে

open f,">>f";print f

আমি এই পয়েন্ট-ওয়াস সম্পর্কে আসলে নিশ্চিত নই, তবে এটি মানদণ্ডগুলি পূরণ করে। অতীতের এন্ট্রিগুলির জন্য, কেবল ক্লিপ বিকল্পগুলি গণনা করা হয়েছিল, তাই আমি যা করছি with

পড়ুন, 0 + 2 বাইট

perl -pe "" f

1
কেন আপনি -ne1 দিয়ে স্কোর করেছেন (এটি eখুব বেশি হওয়া উচিত ) তবে -pe2 দিয়ে? আপনি ব্যবহার করতে পারেন -Eএবং sayপরিবর্তে print
সিমবাচ

আমাকে জানাতে দেওয়ার জন্য আপনাকে ধন্যবাদ -E, আমি তার সাথে পরিচিত ছিলাম না। আমি কেন গেলাম না কেন -ne, কারণ এটির জন্যই আমি আসলে একটি ফাইল থেকে চালাচ্ছি। সুতরাং, দেখে মনে হবে এটি perl -n w.plযদি পিসিজি সম্প্রদায়ের মানগুলির বিরুদ্ধে যায় তবে আমি সেই অনুযায়ী আমার উত্তরটি সম্পাদনা করতে পারি।
জেফ্রি এইচ।

না এটা ঠিক আছে. আমরা অতিরিক্ত কমান্ড লাইন আর্গুমেন্টের জন্য একটি মালাস যুক্ত করি, তাই এটি ঠিক আছে।
সিমবাচ

2
">>","f"-> ">>f"3 চরের সাশ্রয় হয়
জনতা

1

সংযুক্তি , 23 + 16 = 39 বাইট

কেবল ফাইল করার জন্য STDIN লিখে A, তারপর ফাইল পড়ে A

store.@:

$A&FileWrite!AllInput[]

retrieve.@:

Echo!FileRead!$A

পরীক্ষামূলক

C:\Users\conorob\Programming\attache (master -> origin)
λ echo testing | attache store.@

C:\Users\conorob\Programming\attache (master -> origin)
λ attache retrieve.@
testing

1

লুয়া, 57 53 51 বাইট

স্টোর, 27 বাইট

io.open("x","w"):write(...)

পুনরুদ্ধার করুন, 24 বাইট

print(io.open"x":read())

1

চুনি

স্টোর (24 বাইট)

File.write('a', ARGV[0])

পুনরুদ্ধার (16 বাইট)

p File.read('a')

4
প্রশ্নটি যুক্তি দিয়ে নয়, এসটিডিএন থেকে ইনপুট সংরক্ষণের জন্য জিজ্ঞাসা করে
ফেরিবিগ

আমি তখন থেকেই যুক্তি সহ আইও বিকল্পের অনুমতি দেওয়ার জন্য সম্পাদনা করেছি।
জ্যারেড কে

1
File.write'a',getsএবং p File.read'a'কিছুটা খাটো;)
DarkWiiPlayer

1

সি (ইউনিক্স / জিএনইউ), 23 + 23 = 46 বাইট

স্টোর, 27 23 বাইট

main(){system("dd>f");}

পুনরুদ্ধার করুন, 27 23 বাইট

main(){system("dd<f");}

এটি মূলত জোফেলের উত্তরগুলিকে একটি সি প্রোগ্রামে আবৃত করে

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


আপনার সংকলকটির উপর নির্ভর করে আপনি এর intথেকে ফেরতের প্রকারটি সরাতেও সক্ষম হতে পারেন main। পুরানো এএনএসআই সি স্টাইলটি intডিফল্ট রিটার্ন টাইপ।
Jakob

@ জাকব আহ, হ্যাঁ, অবশ্যই আমি ইচ্ছাকৃত ঘোষণার উপর সচেতনভাবে নির্ভর করেছি system()এবং এর কথা ভুলে গেছি main()ou এটি নির্দেশ করার জন্য ধন্যবাদ :-)
সাস্টার

1

পিএইচপি, 26 + 1 + 21 = 48 বাইট

Store.php:

<?fputs(fopen(s,w),$argn);

সাথে চালাও echo <input> | php -nF Store.php

Retrieve.php:

<?=fgets(fopen(s,r));

সাথে চালাও php -n Retrieve.php


1

সি (জিসিসি) , 77 67 + 25 = 92 বাইট

আমার সিসিতে কেবলমাত্র কয়েকটি সতর্কতা সহ সংকলিত।

store.c

#include<stdio.h>
main(int c,char**v){fputs(v[1],fopen("f","w"));}

অন্তর্ভুক্ত সম্ভবত গল্ফ আউট করতে পারেন, কিন্তু আমি কিভাবে বুঝতে পারি না। আপনি যদি এটিকে কিছু না দিয়ে থাকেন তবে সেগফাল্টগুলি but

পিটার কর্ডস: -১

read.c

main(){system("cat f");}

int*f=fopenকাজ করা উচিত, যেমন পয়েন্টার ধরণের সম্পর্কে আপনার সংকলক মিথ্যা। তবে আপনি যদি কেবলমাত্র 32-বিট সিস্টেমের জন্য সংকলন করেন (যেমন একটি যেখানে intপয়েন্টার ধরে রাখতে পারে, যেমন gcc -m32বা কেবল gccএকটি সম্পূর্ণ 32-বিট সিস্টেমে থাকতে পারে)। আপনি প্রধান হিসাবে ঘোষণা করতে পারেন main(int c,char**v), বা সম্ভবত int**vআপনি ডিফারেন্সিং করছেন না বলে।
পিটার কর্ডেস

main(int c,char**v)কাজ করে। আমি বুঝতে পারি যে আমি এটি করতে পারি fputs(v[1],fopen("f","w"), যদিও এটি এখনও কোনও কারণে স্টুডিওর প্রয়োজন।
সাইনস্ট্যাকএফএল্ট

আপনি যদি একটি 32-বিট এক্সিকিউটেবলের সংকলন করেন তবে এটি কাজ করা উচিত। X86-64 এর জন্য, সংকলকটি intরিটার্নের মান 32 বিটকে ছাঁটাই করবে, তারপরে এটি পয়েন্টার হিসাবে সাইন-প্রসারিত করবে। যদি FILE*রিটার্নটি কম 32 বিটে হয় তবে এটি কার্যকর হবে, তবে এটি x86-64 লিনাক্সের ক্ষেত্রে নয়।
পিটার কর্ডেস

আপনি যদি এমন কোনও সিস্টেমে থাকেন যেখানে সমস্ত পয়েন্টার আকারের সমান (বরং সম্ভবত) থাকে তবে আপনি fopenনিজেই ঘোষণা করে অন্তর্ভুক্তটি এড়াতে পারবেন । আর্গুমেন্ট সহ পুরানো স্কুল যাওয়া সংরক্ষণ কিছু খুব বাইট: *fopen();main(c,v)int**v;{fputs(v[1],fopen("f","w"));}
গ্যাস্ট্রোপনার

1

ব্যাচ - 11 বাইট

%12>f
type f

ইনপুটটি একটি কমান্ড-লাইন আর্গুমেন্ট হিসাবে প্রাপ্ত হয় এবং স্থির থাকে (সিএমডি প্যারামিটারটি কার্যকর করার চেষ্টা করার পরে, মৃত্যুদণ্ড কার্যকর করার চেষ্টা করার পরে তৈরি করা ত্রুটি বার্তা সহ) f


ব্যাচ - 7 বাইট (অ-প্রতিযোগিতামূলক)

'>%1
dir

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


1
আপনার সমাধানটি STDOUT এ আউটপুট প্রদর্শিত হবে যা বৈধ। এসটিডিআরআর কেবল অন্য একটি বিকল্প, প্রয়োজন নেই। ইনপুটটির চারপাশের উদ্ধৃতিগুলি প্রতিযোগিতা থেকে বিরত থাকে না। একমাত্র প্রশ্ন হ'ল সেগুলি আপনার বাইট গণনায় গণনা করা উচিত। আমি মনে করি না, যেহেতু তারা প্রশ্নের সাথে নির্দিষ্ট নয়। কমান্ড লাইন আর্গ নিতে ব্যাচের পক্ষে এগুলিকে স্ট্যান্ডার্ড বয়লারপ্লেটের মতো মনে হয়, যা স্ট্যান্ডার্ড কমান্ড লাইন পতাকাগুলির প্রয়োজন ভাষা থেকে এতটা আলাদা নয়। হয়ত ব্যাচের জ্ঞান সহ অন্য কেউ চিমে প্রবেশ করবে For কোড গল্ফ স্বাগতম! :)
জারেড কে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.