সবচেয়ে ছোট ফাইলটি সন্ধান করুন


19

গোল:

বর্তমান ফোল্ডারে ক্ষুদ্রতম ফাইল সন্ধান করার জন্য একটি প্রোগ্রাম তৈরি করুন।

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

  • ধরে নিন যে বর্তমান ডিরেক্টরিতে কোনও ফোল্ডার নেই।

ইনপুট:

প্রোগ্রামটি ব্যবহারকারীর কাছ থেকে কোনও ইনপুট নেওয়া উচিত নয়, যদি না:

  • যদি আপনার ভাষার কোনও "বর্তমান ফোল্ডার" না থাকে তবে এটি ব্যবহারকারীকে ফোল্ডারের নাম / পথের জন্য জিজ্ঞাসা করতে পারে।
  • যদি আপনার ভাষা আপনার কম্পিউটারে সরাসরি ফাইল অ্যাক্সেস করতে না পারে তবে এটি ব্যবহারকারীকে ফাইল আপলোড করার অনুমতি দিতে পারে। (উদাহরণস্বরূপ জাভাস্ক্রিপ্ট)

আউটপুট:

সবচেয়ে ছোট ফাইলটির নামটি প্রদর্শিত হবে।

  • শীর্ষস্থানীয় / পিছনের চিহ্নগুলি অনুমোদিত, যতক্ষণ না এটি স্পষ্ট হয় যে কোন ফাইলটি বেছে নেওয়া হয়েছে।
  • (সমস্ত ফাইলের একটি তালিকা মুদ্রণ করা বিধি বিপরীতে)।

মন্তব্য:


1
আমরা ফাইল অনুমান করতে পারেন করতে পারেন 0 একটি আকার আছে?
Rɪᴋᴇʀ

এছাড়াও, "ধরে নেওয়া যায় যে ফোল্ডারের সমস্ত ফাইল অ্যাক্সেস করা যায়" এর অর্থ কী? তার মানে কি লুকানো ফাইলগুলি দেখানোর দরকার নেই?
Rɪᴋᴇʀ

2
আমি কি ধরে নিতে পারি যে বর্তমান ফোল্ডারে কোনও ফোল্ডার নেই? আপনার যদি এমন কোনও ভাষা ফাংশন থাকে যা কেবলমাত্র ফাইলগুলির পরিবর্তে ফাইল এবং ফোল্ডার উভয়ই দেয়!
সার্জিওল

1
অগত্যা। আপনি ধরে নিতে পারেন যে বর্তমান ডিরেক্টরিতে কোনও ডিরেক্টরি নেই এবং এটি কোনও উত্তর অকার্যকর করে না।
ডেনিস

1
(দুঃখিত আমি তাড়াতাড়ি জবাব দেইনি, আমার ইন্টারনেট সংযোগটি কয়েক দিনের জন্য বন্ধ ছিল) আপনাকে লুকানো ফাইলগুলি এড়িয়ে যাওয়ার অনুমতি দেওয়ার সাথে আমার যে সমস্যাটি হ'ল তা হ'ল এটি অনেকটা ফাঁক ফাঁকে মনে হচ্ছে। আপনাকে "অ্যাক্সেস করা কিছুটা শক্ত" ফাইলগুলি এড়িয়ে যাওয়ার অর্থ হ'ল লোকেরা কেবল প্রথম 9 টি ফাইল পরীক্ষা করার মতো কিছু করতে পারে কারণ এটি কয়েকটি বাইট সংরক্ষণ করে।
12 মে 21

উত্তর:


7

Vim 12 বাইট

!!ls -Sa
Gd{

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

ব্যাখ্যা:

!!হয় ফিল্টার কমান্ড। এটি একটি স্বেচ্ছাসেবক সিস্টেম কমান্ডে বর্তমান লাইনের বিষয়বস্তুগুলি পাইপ করে এবং আউটপুটটিকে আবার বাফারে প্রেরণ করে। এটি বাহ্যিক সরঞ্জামগুলি এমন জিনিসগুলির জন্য দরকারী যা ব্যাশ ভিমের চেয়ে বেশি ভাল, উদাহরণস্বরূপ !!revবর্তমান লাইনটি বিপরীত করতে, বা !Gxxdবাফারকে হেক্সডাম্প করতে। আমাদের ক্ষেত্রে বাফার খালি তাই এটি এর সমতুল্য :r!ls, যা কমান্ডের আউটপুটটিকে বর্তমান লাইনে ফিড করে।

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

G       " Go to the last line
 k      " Go up one line
  d     " Delete:
   gg   "   Everything up to the first line

কিন্তু আমরা আরো ভালো করতে পারে। আমি ব্যাখ্যা এই ডগা , {করতে সাধারণত (কিন্তু সবসময় নয়) সমতূল্য হতে gg। এখানে, এটি আরও ভাল। গতিটি চরিত্র-ভিত্তিক , লাইন-ভিত্তিক মত ggনয়, আমাদের প্রথমে একটি লাইনে যেতে হবে না, আমাদের রেখে

Gd{

16

বাশ + কোর্টিলস, 13 বাইট

ls -Sar|sed q

ব্যাখ্যা:

ls -Sar|sed q
ls            # list files
   -S         # sorted, biggest first
     a        # show hidden files
      r       # reversed (smallest first)
       |sed q # q is quit at first line that matches given regex, 
              # given regex is empty so guaranteed match.         

এটি আমার নিজের উত্তর হিসাবে পোস্ট করেছে, তবে আমি মনে করি এটি আপনার সাথে খুব মিল। ls -1Sa|tail -13 বাইট সংক্ষিপ্ত এবং ক্লিনার আউটপুট রয়েছে।
orlp

@ অর্পল থ্যাঙ্কস! ..
Rɪᴋᴇʀ

1
আমি মনে করি না যে আপনার '-1' দরকার, পাইপ স্বয়ংক্রিয়ভাবে প্রতি লাইনে একটি ফাইল রাখে।
জিবি ২

@ ইস্টারলিআইর্ক আমার মনে হয় জিবি ঠিক আছে। যদি lsডিটেক্ট করে আউটপুট টার্মিনালে এটা একাধিক কলাম মধ্যে আউটপুট ফরম্যাট হবে। তবে আউটপুট যদি পাইপ হয় তবে এটি প্রতি লাইনে কেবল 1 করবে। lsবনাম তুলনা করুনls|cat
ডিজিটাল ট্রমা

দুটি বাইট সংক্ষিপ্ত:ls -Sar|sed q
ডিজিটাল ট্রমা

8

পাইথন 2 3, 94 76 74 54 বাইট

-১৮ বাইটস
@ অরলপ -২ বাইটসকে ধন্যবাদ জানায় @ জোনাথন অ্যালান
-২০ বাইট ধন্যবাদ চ্যালেঞ্জের চশমা পরিবর্তনের জন্য

from os import*
print(min(listdir(),key=path.getsize))

print min(filter(path.isfile,listdir(".")),key=path.getsize)পরিষ্কার এবং যথেষ্ট খাটো।
orlp

"."ডিফল্ট হওয়ায় পাইথন 3 এ যাওয়ার জন্য দুটি বাইট সংরক্ষণ করুন । print(min(filter(path.isfile,listdir()),key=path.getsize))
জোনাথন অ্যালান

এছাড়াও আমি not 77 নয় 76 76 গণনা করি
জোনাথন অ্যালান


বহির্মুখী বাইটটি একটি পিছনের নতুন লাইনের কারণে হবে যা পাইথনের জন্য প্রয়োজনীয় নয়। অতিরিক্ত হিসাবে, যেহেতু চ্যালেঞ্জটি আপডেট করে আপডেট করা হয়েছিল যে কোনও উপ-ডিরেক্টরি উপস্থিত নেই তাই পুরো filterবিটটি অপ্রয়োজনীয়। এটি পাইথন 3 তেও কাজ করে না, যেহেতু printএকটি ফাংশন। নিম্নলিখিতগুলি কাজ করবে এবং যথেষ্ট সংক্ষিপ্ত হবে:print(min(listdir(),key=path.getsize))
মেগো

8

পাওয়ারশেল , 30 24 21 বাইট

(ls|sort le*)[0].Name

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

lsজন্য একটি উপনাম Get-ChildItemsort-objectএটি lengthবৈশিষ্ট্যের সাথে পাইপ করা হয়েছে, সুতরাং ফাইলগুলি আকার অনুসারে বাছাই করা হয়। (...)[0]প্রথমটি (যেমন, সবচেয়ে ছোট) পাওয়ার জন্য আমরা এর সাথে সূচীকরণ করি এবং তারপরে এটি গ্রহণ করি .Name। অন্তর্ভুক্ত মাধ্যমে আউটপুট Write-Outputপ্রোগ্রাম সমাপ্তিতে ঘটে।

6 বাইট সংরক্ষণ করা হয়েছে যেহেতু আমাদের গ্যারান্টিযুক্ত যে কেবলমাত্র ডিরেক্টরিতে ফাইল রয়েছে। কনারএলএসডাব্লু কে অতিরিক্ত 3 ধন্যবাদ সংরক্ষণ করা হয়েছে।


2
-fileকেবলমাত্র বর্তমান ডিরেক্টরিতে ফাইল থাকায় আপনি কি পরিত্রাণ পেতে পারবেন না ?
Mutantoe

@ মুত্তান্তো হ্যাঁ - আমি এই উত্তরটি পোস্ট করার পরে এটি চ্যালেঞ্জের মধ্যে সম্পাদিত হয়েছিল। ধন্যবাদ!
অ্যাডমবর্কবর্ক 19

আপনি sort le*কিছু বাইট শেভ করতে ব্যবহার করতে পারেন যেহেতু পাওয়ারশেল এটি গ্রহণ করবে।
কলস

@ কননরএলএসডাব্লু হ্যাঁ, অবশ্যই ধন্যবাদ!
অ্যাডমবর্কবার্ক

7

রুবি, 61 40 38 37 বাইট

ধন্যবাদ জিবি এবং মান কালি

p Dir[?*,".*"].min_by{|x|File.size x}

তুমি ব্যবহার করতে পার ?. সবচেয়ে ছোট ফাইলটি পেতে Dir.pwd এর পরিবর্তে এবং min_by।। Dir.foreach(?.).min_by{|x|File.size x}38 বাইটে একই ফলাফল পায়।
জিবি

@GB ধন্যবাদ!
dkudriavtsev

এটি লজ্জার বিষয় যে ভাষাটিতে অ্যাক্সেস করতে পারে এমন "সমস্ত" ফাইলগুলি অবশ্যই দেখতে হবে, কারণ Dir[?*] এটি খুব খাটো তবে এতে লুকানো ইউনিক্স ফাইলগুলি অন্তর্ভুক্ত নয় .bash_profile...
মান ইঙ্ক

হয়তো দির [? *, "।? *"] কাজ করতে পারে। আমি চেষ্টা করিনি। এবং এটি সংক্ষিপ্ত।
জিবি

@ জিবি এটি আসবে Dir[?*,".*"]। গ্লোব স্ট্রিং উপস্থিত থাকলে .?*ফাইলের সাথে মেলে না .a
মান কালি

6

গণিত, 35 বাইট

FileNames[]~MinimalBy~FileByteCount

FileNames[]বর্তমান ডিরেক্টরিতে সমস্ত ফাইলের (এবং ডিরেক্টরিগুলি) নামের একটি তালিকা তৈরি করে; ~MinimalBy~FileByteCountযার ফাইলের বাইট গণনা সবচেয়ে কম তার নাম নির্বাচন করে। FileByteCountএটি ডিরেক্টরিতে প্রয়োগ করা হলে ত্রুটিগুলির একটি গুচ্ছ নিক্ষেপ করে তবে ত্রুটিগুলি প্রোগ্রামটিকে লেনদেন করে না।


6

জাভা 7, 149 142 বাইট

String f(){String n="";long s=-1>>>1,p;for(java.io.File f:new java.io.File(".").listFiles())if((p=f.length())<s){n=f.getName();s=p;}return n;}

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

-7 বাইট CAD97 ধন্যবাদ


আমি মনে করি আপনি ফাইলটি চান: দৈর্ঘ্য ফাইল নয় :: getTotalSpace
CAD97

নিরীক্ষিত জাভা 8: ()->java.utils.stream(new java.io.File(".").listFiles()).max((a,b)->a.length()-b.length).get().getName()104 বাইটের জন্য
CAD97

@ CAD97 আপনি ঠিক বলেছেন! আমি কী ভাবছিলাম ...
পোকে

6

এসএইচ (লিনাক্স / ইউনিক্স) 15 14 13 14 বাইট

ls -aS|tail -1

-S আকার অনুসারে (উতরাই),

-rউল্টো এবং tail -1তালিকার শেষ ফাইল আউটপুট।

@ ডেনিস 1 বাইট @ ডানি_এল 1 বাইট সংরক্ষণ করার জন্য ধন্যবাদ


এটি সবচেয়ে বড় ফাইল খুঁজে পায় , না?
ডেনিস

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

@ ডেনিস আপডেট হয়েছে
আবেল টম

@ ইস্টারলিআইর্ক এখন এটি হওয়া উচিত :)
আবেল টম

@ আবেলটম দুর্দান্ত, ঠিক করার জন্য ধন্যবাদ
আর

4

ম্যাটল্যাব / অষ্টাভে, 52 48 বাইট

d=dir;[~,n]=min([d.bytes]./~[d.isdir]);d(n).name

ব্যাখ্যা

এটি ব্যবহার করে বর্তমান ডিরেক্টরিতে সমস্ত ফাইল এবং ফোল্ডারগুলির একটি ডিরেক্টরি তালিকা ব্যবহার করে dir। এর আউটপুটdir হল structফাইলের নাম সম্বলিত, এটি ডিরেক্টরি হোক বা না হোক, আকার (বাইটে), ইত্যাদি is

তারপরে আমরা বাইটে প্রতিটি আকারের একটি অ্যারে নিতে পারি [d.bytes]এবং একটি বুলিয়ান দিয়ে উপাদান-ভিত্তিক বিভাগ সম্পাদন করতে পারি যে এটি ডিরেক্টরি কিনা তা নির্দেশ করে~[d.isdir] ফলন করবে Infযেখানে এটি একটি ডিরেক্টরি যেখানে ফলিত হবে যেখানে এটি একটি ডিরেক্টরি (শূন্য দ্বারা বিভাগ) এবং অন্যথায় আকার (বিভাগ দ্বারা বিভাজন) 1)।

আমরা দ্বিতীয় অ্যারের আউটপুট ব্যবহার করে এই অ্যারের সর্বনিম্ন minসূচকটি পাই এবং প্রাথমিক কাঠামোর সাথে সূচকে এটি ব্যবহার করি এবং এর সাথে নামটি প্রদর্শন করিd(n).name


disp(...)এটি সঠিকভাবে মুদ্রণের জন্য আপনার আউটপুট জুড়ে দেওয়া উচিত । অন্যথায় উদাহরণস্বরূপ যদি এমন কোনও ফাইল বলা ansহয় যা ফোল্ডারের মধ্যে সবচেয়ে ছোট নয় তবে আউটপুটটি পরিষ্কার হবে না যে ম্যাটল্যাবের সাথে অপরিচিত কারও কাছে ফাইলটি সবচেয়ে ছোট।
টম কার্পেন্টার

@ টমকার্পেন্টার হুমম আমি ব্যাখ্যা করেছিলাম "শীর্ষস্থানীয় / পিছনের প্রতীকগুলি অনুমোদিত রয়েছে, যতক্ষণ না এটি স্পষ্ট হয় যে কোন ফাইলটি বেছে নেওয়া হয়েছে" এর অর্থ দাঁড়ায় যে ans = ঠিক আছে
স্যুভার

আমি ঠিক বুঝতে পেরেছি যে ম্যাটল্যাব অন্তর্নিহিত .(বর্তমান ফোল্ডার) এবং ..(উপরের ফোল্ডার) যুক্ত করেছে, সুতরাং ডিরেক্টরিটি এটির মতো মনে হয় চ্যানেলটি মুছে ফেলতে পারে না। এর জন্যে দুঃখিত.
টম কার্পেন্টার

4

স্কালা, 52 বাইট

পুরানো সংস্করণ, 79 বাইট

new java.io.File(".").listFiles.map(a=>a.getName->a.length)sortBy(_._2)apply(0)

Jaxad0127 এর পরামর্শ অনুসারে সমন্বিত। এটি এখন মাত্র 52 বাইট।

new java.io.File(".").listFiles.sortBy(_.length)head

প্রয়োগের পরিবর্তে মাথা ব্যবহার করা (0) আরও খাটো। এছাড়াও, ফাইলের স্ট্রাস্টিং পদ্ধতিটি ভাল, নাম পেতে কল করার দরকার নেই।
jaxad0127

4

ব্যাচ, 43 39 35 বাইট

@dir/b/os|(set/pf=&call echo %%f%%)

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


ওহ, এইভাবে / পি ব্যবহার করে, ডাং চালাক!
অ্যাডমবর্কবার্ক ২:11

@ অ্যাডমবার্কবার্ক আহ, আমি খেয়াল করিনি যে এটি অনুমোদিত ছিল, ধন্যবাদ!
নিল

আপনাকে গ্যারান্টিযুক্ত যে কোনও উপ-ডিরেক্টরি উপস্থিত নেই (চ্যালেঞ্জটি আপডেট হয়েছিল) যাতে আপনি এটিটি মুছে ফেলতে পারেন /a-d
অ্যাডমবর্কবার্ক

4

পার্ল 6 ,  33 32 31  16 বাইট

'.'.IO.dir.grep(*.f).min(*.s).put

চেষ্টা করে দেখুন

put '.'.IO.dir.min:{try .s//Inf}

চেষ্টা করে দেখুন

put $*CWD.dir.min:{try .s//Inf}

চেষ্টা করে দেখুন

put dir.min: *.s

চেষ্টা করে দেখুন

সম্প্রসারিত:

put        # print with trailing newline
dir        # the list of files in the current directory
.min:      # find the minimum by
  *.s      # calling the `s` method (size) in a Whatever lambda

এর dirডিফল্ট ফাংশন ফর্ম $*CWD, এবং কার্য বিবরণ বলছে যে আপনি ধরে নিতে পারেন কোনও ফোল্ডার থাকবে না, তাই আমি মনে করি আপনি এটি সংক্ষেপণ করতে পারেন dir.min(*.s).put
স্মলস

আমি যখন এটি লিখেছি, এটিতে প্রোগ্রামটি অবশ্যই ফোল্ডারগুলি উপেক্ষা করবে ignore
ব্র্যাড গিলবার্ট ২২

4

জে , 21 20 বাইট

>{.,(/:2&{"1)1!:0'*'

@ কনরকে ধন্যবাদ একটি বাইট সংরক্ষণ করা হয়েছে ।

ব্যাখ্যা

>{.,(/:2&{"1)1!:0'*'
                 '*' Glob all files in current directory
             1!:0    Table of file metadata in that directory
       2&{"1         Get the file size of each
     /:              Sort the files by that
   ,                 Flatten
 {.                  Get the first value
>                    Unbox

@ কনরও ব্রায়েন ধন্যবাদ
মাইল

3

ব্যাচ ফাইল, 77 72 63 বাইট

@FOR /F "tokens=*" %%G IN ('dir/o-s/b') DO @SET F=%%G
@ECHO %F%

কমপক্ষে আমার জ্ঞানের সাথে headবা tailব্যাচের কোনও সরাসরি সমতুল্য নেই , সুতরাং এখানে একটি ক্লডজি কাজ রয়েছে। (@ নীলের কাছ থেকে অনেক সহায়তার সাথে - ধন্যবাদ!)

dirকমান্ড দিয়ে /o-sসাজানো ফাইল সাইজ সাজানোর, এবং /bআউটপুট শুধুমাত্র ফাইলের নাম। যাদের সাথে আমরা লুপ করি FOR /F, Fপ্রতিবার ফাইলের নামের সাথে ভেরিয়েবলটি সেট করি । অবশেষে, আমরা শেষটি দিয়ে আউটপুট করি ECHO %F%

নীলকে আরও 9 টি বাইট সংরক্ষণ করা হয়েছে এবং গ্যারান্টির জন্য ধন্যবাদ যে কোনও ডিরেক্টরি উপস্থিত নেই।


1
স্ক্রিপ্টে কাজ করতে আপনার FORপরিবর্তনশীলটির দুটি প্রয়োজন two %অন্যথায়, কয়েকটি গল্ফিং ট্রিকস: ১. @ECHO OFFসংক্ষিপ্ত স্ক্রিপ্টগুলিতে ব্যবহার করবেন না , @প্রতিটি লাইনে এবং পরে একটি যুক্ত করুন DO। 2. আগে স্থান মুছুন DO। 3. কমান্ডে ফাঁকা স্থান এবং :গুলি প্রয়োজন হয় না dir
নীল

1
@ নীল আক, ধন্যবাদ দুঃখিত, আমি পাওয়ারশেল করে যাবার পর থেকে বেশ মরিচা ... ধন্যবাদ!
অ্যাডমবর্কবার্ক

3

পিএইচপি, 84 62 বাইট

$t=array_map(filesize,$g=glob('*'));asort($t);echo$g[key($t)];

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


এখানে আমার পুরানো উত্তর:

$t=array_map(filesize,$g=array_filter(glob('*'),is_file));asort($t);echo$g[key($t)];

এটি আমি করতে পারে সেরা। আমি মিস করছি এর চেয়ে ভাল উপায় আছে।

$t=array_map(              # visit each array element and...
    filesize,              # map each filename to its filesize...
    $g=array_filter(       # using an array of...
        glob('*'),         # all files and directories...
        is_file            # filtered by files...
    )                      # 
);                         # 
asort($t);                 # sort the array of filesizes, then...
echo$g[key($t)];           # print element from the array of files using the first key of the sorted array as an index

2

নোড.জেএস (ব্যবহার করে walk), 114 বাইট

নিউলাইন উপেক্ষা করুন:

require('walk').walk(__dirname).on('file',(r,s,n)=>
(m=s.size>m.size?m:s,n()),m=0).on('end',_=>console.log(m.name))

এটি এমন একটি ওয়াকারকে আমন্ত্রণ জানায় যা বর্তমান ডিরেক্টরিটি ( __dirname) প্রবেশ করে এবং প্রতিটি ফাইলের জন্য তার স্ট্যাটাস সহ একটি ফাংশন কল করে sএবং পরবর্তী ক্রিয়াকলাপকে n()ট্র্যাভারসাল চালিয়ে যাওয়ার জন্য অনুরোধ করা উচিত। তারপরে end, এটি sizeপাওয়া যায় সর্বনিম্ন বাইট সহ একটি ফাইলের নাম মুদ্রণ করে । s.size>m.sizeআয় falseযখন m.sizeহয় undefined, তাই প্রথম কলব্যাক পর mসমান প্রথম ফাইলটি পাওয়া যায়, এবং স্বাভাবিকভাবে থেকে চলতে থাকে।


2

আর, 36 বাইট

x=file.info(y<-dir())$s;y[x==min(x)]

ব্যাখ্যা

file.info()data.frameফাইল / ফোল্ডার নামগুলির একটি চরিত্র বা চরিত্রের ভেক্টর দেওয়া হলে একটি "ফাইল তথ্য" প্রদান করে যা বর্তমান ডিরেক্টরিতে ( dir()) ফাইল / ফোল্ডারগুলির তালিকায় ব্যবহৃত হলে এরকম কিছু দেখায়:

                                                               size isdir mode               mtime               ctime               atime exe
Polyspace_Workspace                                               0  TRUE  777 2014-11-28 17:29:25 2014-11-28 17:29:25 2014-11-28 17:29:25  no
Python Scripts                                                    0  TRUE  777 2016-03-21 23:59:41 2016-03-21 23:59:41 2016-03-21 23:59:41  no
R                                                                 0  TRUE  777 2015-12-23 20:11:02 2015-12-23 20:11:02 2015-12-23 20:11:02  no
Rockstar Games                                                    0  TRUE  777 2015-04-14 12:23:05 2015-04-14 12:23:03 2015-04-14 12:23:05  no
TrackmaniaTurbo                                                   0  TRUE  777 2016-03-24 17:15:05 2016-03-24 13:13:48 2016-03-24 17:15:05  no
ts3_clientui-win64-1394624943-2014-06-11 03_18_47.004772.dmp 314197 FALSE  666 2014-06-11 02:18:47 2014-06-11 02:18:47 2014-06-11 02:18:47  no

এরপরে আমাদের কেবল ফাইলটির নাম সন্ধান করা হয়েছে যার জন্য sizeকলামটি (সংক্ষেপে ব্যবহার করে $s) সবচেয়ে ছোট is ফলস্বরূপ, যদি ক্ষুদ্রতম আকারের সাথে একাধিক ফাইল থাকে তবে সমস্তই ফিরে আসবে।

বোনাস: যদি আমরা বর্তমান ডিরেক্টরিতে ফোল্ডারগুলিকেও উপেক্ষা করতে চাইতাম তবে আমরা কেবল আকারটি অনুসন্ধান করতে পারতাম যখন isdir == FALSE: x=file.info(y<-dir());y[x$s==min(x$s[!x$i])]যা 44 বাইট হয়।


বিট দেরিতে, তবে file.sizeসংক্ষিপ্ত কারণ আপনার $sপরে আর করতে হবে না ।
জেএডি


2

স্মাইলব্যাসিক, ১১০ বাইট

DIM F$[0]FILES"TXT:",F$FOR I=0TO LEN(F$)-1F$[I][0]="TXT:
S=LEN(LOAD(F$[I],0))IF!Z||S<Z THEN Z=S:B=I
NEXT?F$[B]

কেবল TXT:ফাইলগুলির দিকে তাকান , যেহেতু DAT:ফাইলগুলির আকারটি আপনি ইতিমধ্যে না জানলে লোড করা যায় না, এলোমেলো একটি লোড করা অসম্ভব হয়ে পড়ে।


আপনি কিভাবে একটি DAT: ফাইল লোড করবেন ? আপনি কি ফোল্ডারে প্রতিটি নাম / ফাইলের আকারটিকে জোর করে চাপিয়ে দিতে পারবেন?
পাভেল

একটি 3-মাত্রিক DAT:ফাইলকে 2-মাত্রিক অ্যারে (উদাহরণস্বরূপ) লোড করার চেষ্টা করার ফলে একটি ত্রুটি ঘটবে, সুতরাং আপনি এটিকে জোর করতে পারবেন না। আপনাকে মাত্রিক মাত্রার আগেই জানতে হবে যা আপনি সাধারণত করতেন।
12 মে 21

আপনি কি 2-ডি DAT: ফাইলকে 3-ডি অ্যারে লোড করতে পারবেন ? তারপরে আপনি সর্বাধিক আকারের অ্যারে তৈরি করতে পারেন। এবং আপনি কোনওভাবেই ত্রুটিগুলি ধরতে পারবেন না?
পাভেল

নাহ, এটি কোনও প্রকারের অমিল ত্রুটির কারণ হবে। এবং ত্রুটিগুলি ধরার কোনও উপায় নেই।
12 মে 21


1

সি #, 277 বাইট

সংক্ষিপ্ততম নয়, তবে আপনি সি # থেকে কী আশা করবেন?

Golfed

using System.Linq;using static System.IO.Directory;class P{static void Main(){var x=GetFiles(GetCurrentDirectory());var d=new long[]{}.ToList();foreach(var s in x){var b=new System.IO.FileInfo(s).Length;if(!d.Contains(b))d.Add(b);}System.Console.Write(x[d.IndexOf(d.Min())]);}}

Ungolfed

//Linq using for List.Min()
using System.Linq;
//Static using to save bytes on GetCurrentDirectory() and GetFiles()
using static System.IO.Directory;

class P
{
    static void Main()
    {
        //String array containing file paths
        var x = GetFiles(GetCurrentDirectory());
        //Creating a Long array and converting it to a list, less bytes than "new System.Collections.Generic.List<long>()"
        var d = new long[] { }.ToList();
        foreach (var s in x) //Loop through all file paths
        {
            //Getting file size in bytes
            var b = new System.IO.FileInfo(s).Length;
            if (!d.Contains(b))
                //If there isn't already a file with this size in our List, add the file path to list
                d.Add(b);

        }
        //Get index of the smallest Long in our List, which is also the index of the file path to the smallest file, then write that path
        System.Console.Write(x[d.IndexOf(d.Min())]);
    }
}

1

Röda , 32 31 বাইট

{ls""|sort key=fileLength|pull}

এটি একটি বেনাম ফাংশন যা বর্তমান ডিরেক্টরিতে ফাইল দৈর্ঘ্য অনুসারে বাছাই করে এবং এর সাথে প্রথম ফাইলটি নির্বাচন করে pull

এটি এর মতো ব্যবহার করুন: main{ {ls""|sort key=fileLength|pull} }


দৃশ্যত ls""ঠিক পাশাপাশি কাজ করে ls"."। আমি মনে করি আপনি এটি থেকে একটি বাইট সংরক্ষণ করতে পারেন
ক্রিটসি লিথোস

@ ক্রিটিক্সিলিথোস মনে হচ্ছে ধন্যবাদ!
ফার্গুসক

0

স্মাইলব্যাসিক 3, 105 বাইট (প্রতিযোগিতা?)

Beats 12Me21 এর উত্তর কিন্তু এখনও ডিএটি ফাইল লোড করতে অক্ষমতা ভুগছেন (যা খুব পরিস্থিতিতে বিবেচনা করা disqualifying করা নিষ্ঠুর মতানুযায়ী।)

DIM F$[0],T[0]FILES"TXT:",F$FOR I=0TO LEN(F$)-1F$[I][0]="TXT:
PUSH T,LEN(LOAD(F$[I]))NEXT
SORT T,F$?F$[0]

উপরের সংক্ষিপ্ত সংস্করণটি বিরক্তিকর এবং প্রতিটি ফাইল লোড করার জন্য আপনাকে অনুরোধ জানায়, তবে এটি কার্যকর হয়। আরও দুটি বাইটের জন্য আপনি প্রম্পটটি দমন করতে পারেন; লাইন 2 এটি পরিবর্তন করুন:

PUSH T,LEN(LOAD(F$[I],0))NEXT

0

ব্যাচ ফাইল, 33 বাইট

ব্যাচের ফাইলগুলি এবার বিস্ময়করভাবে প্রতিযোগিতামূলক, অদ্ভুতভাবে যথেষ্ট।

@dir/os/b>..\q&set/pa=<..\q&"%a%.

আউটপুট

এখানে চিত্র বর্ণনা লিখুন


চালানোর qপূর্বে সৃষ্টিটি থামানোর জন্য কোনও উপায় সন্ধান dir/os/bকরুন এবং আউটপুট ফাইলটিকে আলাদা ডিরেক্টরিতে রাখার দরকার না রেখে আপনি সর্বাধিক 6 বাইট সংরক্ষণ করবেন।

@dir/os/b>q&set/pa=<q&"%a%

সর্বদা qক্ষুদ্রতম ফাইল হিসাবে আউটপুট হবে (অন্য 0 বাইট ফাইলের সাথে আবদ্ধ না হলে) এটি খালি ফাইল হিসাবে তৈরি হওয়ার আগে dir/b/osফাইলগুলির তালিকা সংগ্রহের আগে ।


0

সি ++ 17 (জিসিসি) , 180 বাইট

#include<filesystem>
using namespace std::filesystem;auto f(){std::error_code e;path r;size_t m=-1,s;for(auto&p:directory_iterator(".")){s=file_size(p,e);if(s<m)m=s,r=p;}return r;}

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

প্রয়োগ করে এমন একটি সাম্প্রতিক স্ট্যান্ডার্ড লাইব্রেরি প্রয়োজন std::filesystem


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