অনুপস্থিত অক্ষরগুলি মুদ্রণ করুন


18

আমার পূর্ববর্তী মুদ্রণ অদৃশ্য পাঠ্যের জনপ্রিয়তার দ্বারা অনুপ্রাণিত সাধারণ চ্যালেঞ্জ এবং প্রকৃত অদৃশ্য পাঠ্য চ্যালেঞ্জগুলি এবং একই দৈর্ঘ্যের বিভিন্ন স্ট্রিং চ্যালেঞ্জ print

শুধুমাত্র মুদ্রণযোগ্য অক্ষর ( 0x20 to 0x7E) সমন্বিত একটি স্ট্রিং দেওয়া, স্ট্রিংটিতে উপস্থিত না থাকা প্রতিটি মুদ্রণযোগ্য অক্ষর মুদ্রণ করুন।

ইনপুট

কেবল একটি মুদ্রণযোগ্য ASCII অক্ষর সমন্বয়ে একটি স্ট্রিং বা অক্ষরের অ্যারে

আউটপুট

প্রতিটি মুদ্রণযোগ্য ASCII অক্ষর কোনও ক্রমে ইনপুট স্ট্রিংয়ে উপস্থিত না থাকে।

Testcases

Input:  "Hello, World!"
Output: ""#$%&'()*+-./0123456789:;<=>?@ABCDEFGIJKLMNOPQRSTUVXYZ[\]^_`abcfghijkmnpqstuvwxyz{|}~"
========
Input:  "Hi!"
Output: " "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmnopqrstuvwxyz{|}~"
========
Input:  ""
Output: " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
========
Input:  " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
Output: ""

স্কোরিং

এটি কোড-গল্ফ হ'ল প্রতিটি ভাষার জয়ে খুব কম বাইট


যদি একটি অ্যারে ফিরিয়ে দেওয়া হয়, আমরা ব্যবহৃত অক্ষরের জায়গায় খালি উপাদানগুলি অন্তর্ভুক্ত করতে পারি?
শেগি

@ শেগি নিশ্চিত, এটি ঠিক আছে
স্কিডসদেব 31:37

@ রড আমার পরিকল্পনা ফাঁস করবেন না ডি:
স্কিডেদেব

আউটপুট কি অক্ষরের স্ট্রিংগুলির সেট অবজেক্ট হতে পারে ? set( 'a', 'b', 'c' )
ব্র্যাড গিলবার্ট বিগগিল

1
@ মিখাইলভি কেবলমাত্র যদি আপনার ভাষা ASCII অক্ষরগুলি আউটপুট করতে না পারে
স্কিডদেব

উত্তর:



6

পার্ল 6 , 29 বাইট

{[~] keys (' '..'~')∖.comb}

নোট করুন যে ফলাফলটি এলোমেলো কারণ সেট গুলি বিনা অর্পিত।

এটা পরীক্ষা করো

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

{
  [~]        # reduce using string concatenation
             # (shorter than 「join '',」)

  keys       # get the keys from the Set object resulting from the following

  (' '..'~') # Range of printable characters
            # Set minus (this is not \ )
  .comb      # split the input into individual characters
}

এর একটি এএসসিআইআই সংস্করণ রয়েছে (-), তবে এটির আগে এটির জন্য একটি জায়গা প্রয়োজন যাতে এটি সাব্রোটাইন কল হিসাবে পার্স করা যায় না।



5

জাপট , 14 বাইট

Ho#_dÃf@bX ¥J

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

শেগি এবং ওবারাকনকে ধন্যবাদ 4 বাইট সংরক্ষণ করা হয়েছে


1
পতাকাটির দরকার নেই (প্রশ্নে আমার মন্তব্যের জবাব দেখুন)। প্রতিস্থাপন 127সঙ্গে #একটি বাইট সংরক্ষণ করুন এবং মুছে ফেলার জন্য Uঅন্য সংরক্ষণ করুন।
শেগি

1
আপনি ¦কয়েকটি বাইট সংরক্ষণ করতে আপনার যুক্তিগুলি ব্যবহার করতে এবং পুনর্বিন্যাস করতে পারেন । এছাড়াও, 127 টিআইও
অলিভার

1
: এটা 14 বাইট নিচে ethproductions.github.io/japt/...
রোমশ

1
না, আপনি এটি নিয়ে দূরে সরে যাবেন, টম - যেমন আপনি আগেই বলেছিলেন, আমাকে আরও দ্রুত পোস্ট করা শিখতে হবে! : ডি
শেগি

1
একটি 10 ​​বাইট সংস্করণ কিন্তু দুর্ভাগ্যক্রমে অ-প্রতিযোগিতামূলক: ethproductions.github.io/japt/…
শেগি


4

এমএটিএল , 5 বাইট

6Y2X~

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

8 বাইট বন্ধ করে গল্ফ করার জন্য লুইস মেন্ডোকে ধন্যবাদ !

ব্যাখ্যা:

   X~   % The symmetric set difference
6Y2     % Between all printable ASCII
        % And the input string (implicit)
        % Implicitly display

প্রতিসম সেট পার্থক্য প্রতিটি উপাদান দেয় যা দুটি ইনপুট সেটগুলির মধ্যে একের মধ্যে উপস্থিত থাকে। (তবে উভয়ই নয়) এটি সর্বদা সঠিক উত্তর দেবে, যেহেতু ইনপুট সেট সর্বদা দ্বিতীয় সেট (সমস্ত মুদ্রণযোগ্য ASCII) এর উপসেট হবে।

মূল সংস্করণ:

32:126tGom~)c

ব্যাখ্যা:

32:126          % Push the range 32-126
      t         % Duplicate it on the stack
       G        % Push the input
        o       % Convert it to character points
         m      % Is member (0 for each char that isn't in input, 1 for each char that is)
          ~     % Logical NOT
           )    % Take the truthy elements of this array from the previous array (All Printable ASCII)
            c   % Display as a string


3

জাভাস্ক্রিপ্ট (ES6), 74 বাইট

আমি নিশ্চিত যে এটি করার একটি আরও ছোট উপায় আছে!

s=>[...Array(95)].map((_,y)=>s.includes(c=String.fromCharCode(y+32))?"":c)

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

let f=
s=>[...Array(95)].map((_,y)=>s.includes(c=String.fromCharCode(y+32))?"":c)
oninput=_=>o.innerText=f(i.value).join``
o.innerText=f(i.value="Hello, World!").join``
<input id=i><pre id=o>


1
Array(95)নিখোঁজ অন্তর্ভুক্ত করা উচিত~
মালিভিল

সেখানে কি সবসময়ই ছিল, @ মালভিল? শপথ নিতে পারি শেষ চরিত্রটি }যখন আমি এটি লিখেছিলাম। এখনই স্থির, ধন্যবাদ।
শেগি

বিশ্বাস করতে পারি না যে সি # এটির জন্য জাভাস্ক্রিপ্টের চেয়ে কম, বিশেষত আমাকে আমার ব্যবহারগুলি অন্তর্ভুক্ত করতে হবে বলে।
TheLethalCoder

1
@ দ্য লেথলকোডার String.fromCharCodeএকটি গিট, এজন্যই! : ডি
শেজি

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


3

অক্টাভা, 22 20 বাইট

ধন্যবাদ লুইস মেন্ডো 2 বাইট সংরক্ষণ করেছেন

@(s)setxor(32:'~',s)

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

অন্যান্য উত্তর:

@(s)setdiff(' ':'~',s)

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


1
@(s)setxor(' ':'~',s)1 বাইট সংরক্ষণ করে
লুইস মেন্ডো

@ লুইস মেন্ডো খুব সুন্দর! তবে আমি মনে করি এটি অন্যরকম জিনিস। আমি আপনাকে নতুন উত্তর হিসাবে পোস্ট করার পরামর্শ দিচ্ছি :)
rahnema1

1
না, এটি সত্যই সামান্য উন্নতি। আপনি খুশি যদি আপনি এটি পোস্ট করে খুশি হব। বিটিডাব্লুও @(s)setxor(32:'~',s)কাজ করছে বলে মনে হচ্ছে --- এবং তার জন্য একই মন্তব্য :-)
লুইস মেন্ডো

1
@ লুইস মেন্ডো ধন্যবাদ, আমি সম্মত কারণ কারণ (লুইস) বলেছেন।
rahnema1

2

পিএইচপি, 42 বাইট

অ্যারে হিসাবে ইনপুট

স্ট্রিং হিসাবে আউটপুট

<?=join(array_diff(range(" ","~"),$_GET));

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

পিএইচপি, 53 বাইট

স্ট্রিং হিসাবে ইনপুট

স্ট্রিং হিসাবে আউটপুট

<?=join(array_diff(range(" ","~"),str_split($argn)));

প্রতিস্থাপন <?=joinসঙ্গে print_rঅ্যারে হিসাবে একটি আউটপুট

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


হতে পারে আপনার পিএইচপি এর একটি গল্ফ সংস্করণ করা উচিত: পি
ক্যালকুলেটরফ্লাইন

@ ক্যালকুলেটরফ্লাইন আমি নিশ্চিত যে এটি বিদ্যমান তবে এটি সত্যই ভাল নয়
জার্গ হালসারম্যান

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

@ ক্যালকুলেটরফলাইন আপনার জন্য লিঙ্কটি অনুসন্ধান করেছি। github.com/barkermn01/PGP-php- কোডগল্ফ একটি করার আমার কোনও আগ্রহ নেই
জার্গ হ্যালসারম্যান

1
@ ক্যালকুলেটরফলাইন পিএইচপিকে একটি গল্ফিং ল্যাঙ্গুয়েজ তৈরি করা পিএইচপি (কমপক্ষে আমার জন্য) সাথে গল্ফ করার মজাটি কী তা নষ্ট করে দেয়: লুপগুলি, বিভিন্ন ইনপুট পদ্ধতি এবং এই জাতীয় ব্যবহার করে আপনাকে কলিং ফাংশনগুলির (যার প্রায়শই দীর্ঘ নাম থাকে) মধ্যে ক্রমাগত ভারসাম্য বজায় রাখতে হবে। Step 1: automatic starting tagভাল php -r... তবে উদাহরণস্বরূপ এটির echoচেয়ে বেশি কারণ এটি পরিশোধ করে না <?=
ক্রিস্টোফ

2

সিজেম , 8 বাইট

'␡,32>q^

আক্ষরিক মুছে ফেলার অক্ষরটি কোথায় ।

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

'␡,       e# The range of all characters up to ~.
   32>    e# Slice it to be the range of all characters from space to ~.
      q^  e# Symmetric set difference with the input.

ঠিক যেমন একটি নোট, -পরিবর্তে কাজ করে ^
ফল Esolanging

2

পার্ল, 39 বাইট

s!.*!"pack(c95,32..126)=~y/$_//dr"!ee

সাথে চালাও perl -pe


আমি ত্রুটি বার্তাটি পেয়েছি 'বেয়ারওয়ার্ডটি পাওয়া গেছে যেখানে অপারেটর (ইভাল 1) লাইন 2 তে প্রত্যাশিত ছিল, "y / হ্যালো ওয়ার্ল্ড! // ডাঃ"' এর কাছে যখন আমি এটি চালাচ্ছি ...
ক্রিস

ফুল কম্যান্ড-লাইন: echo 'Hello World!' | perl -pe 's!.*!"pack(c95,32..126)=~y/$_//dr"!ee'। এটি পার্ল v5.14 এবং v5.24 উভয় ক্ষেত্রেই আমার পক্ষে কাজ করে।
গ্রিমি

এটি পার্ল v5.10 যা কাজ করছে না ... অবশ্যই 5.10 এবং 5.14 এর মধ্যে পরিবর্তন হওয়া উচিত।
ক্রিস

2

ব্রেনফাক , 120 বাইট

+[+[>+<+<]>]>-[[>>]+[<<]>>-],[<+++++[>------<-]>-[>[>>]+[<<]>-]>[>>]<[-]<[-<<]>,]++++++++[->++++<]>[>[-<.>]<[->>+<<]>>+]

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

জড়ান:

+[+[>+<+<]>]>-[[>>]+[<<]>>-],[<+++++[>--
----<-]>-[>[>>]+[<<]>-]>[>>]<[-]<[-<<]>,
]++++++++[->++++<]>[>[-<.>]<[->>+<<]>>+]

ব্যাখ্যা:

+[+[>+<+<]>]>-         initialize what we will now consider cell 0 to 95
[[>>]+[<<]>>-]         initialize cells 2 4 etc 95*2 to 1; end on cell 0 at 0
,[                     main input loop (for each char of input)
  <+++++[>------<-]>-  subtract 31 from the input
  [>[>>]+[<<]>-]       lay a trail of (input minus 31) ones in the empty spaces
  >[>>]<[-]<[-<<]>     use the trail to clear the appropriate "print" flag
,]                     keep reading input until it ends
++++++++[->++++<]>     initialize the cell directly before flag 1 to 32
[                      we'll let the accumulator overflow; no harm done
  >[-<.>]              print the accumulator if the flag is still set
  <[->>+<<]>>+         shift over the accumulator and increment it
]


2

রুবি, 23 18 17 বাইট

->s{[*' '..?~]-s}

@ সেথ্রিনের মন্তব্য অনুসারে ল্যাম্বডা ফাংশন ব্যবহার করে।

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

[*' '..?~]-s.chars

(' '..'~').to_a-s.chars

sহয় এসটিডিএন থেকে পড়তে হবে না বা কোনও ফাংশন আর্গুমেন্ট হিসাবে সরবরাহ করা হবে না ? চ্যালেঞ্জটি উল্লেখ করে যে ইনপুটটিকে অক্ষরের অ্যারে হিসাবে দেওয়া যেতে পারে। ছুরিকাঘাতের ল্যাম্বডায় রূপান্তর করা এবং নামানো charsএকটি 16-বাইট সমাধান দেয়।
canhascodez

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

@sethrin একটি ছুরিকাঘাতের ল্যাম্বদা সহ এটি 20 টি চর নয়? ->(s){[*' '..?~]-s)}
মার্ক থমাস

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

2

এপিএল, 13 বাইট

⍞~⍨⎕UCS31+⍳95

সহজবোধ্য:

       31+⍳95  ⍝ A vector 32 .. 126
   ⎕UCS        ⍝ as characters
 ~⍨            ⍝ without
⍞              ⍝ those read from character input.

1

আর , 50 বাইট

function(s)intToUtf8(setdiff(32:126,utf8ToInt(s)))

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

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


1

পিএইচপি, 53 বাইট

for($k=31;$k++<126;)~strstr($argn,$k)?:print chr($k);
# or
for($k=31;$k++<126;)echo~strstr($argn,$k)?"":chr($k);

পাইপ হিসাবে চালান -r


আমি আর কোনও খেলার মাঠ
ছাড়িনি

@ জার্গহালসারম্যান আপনি করেন। আপনাকে কেবল এটি ভাগ করতে হবে।
তিতাস

1

সি #, 74 71 বাইট

using System.Linq;s=>new int[95].Select((n,i)=>(char)(i+32)).Except(s);

By৪ বাইটের জন্য একটি সীমা তৈরির সাথে পুরানো সংস্করণ:

using System.Linq;s=>Enumerable.Range(32,95).Select(n=>(char)n).Except(s);

1

05AB1E , 5 4 বাইট

-1 এমিনগাকে ধন্যবাদ

žQsK

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

žQ   # Push all printable characters
  s  # Swap input to the top
   K # Push a with no b's (remove input characters from all printable character)

@ ফ্রডকিউব ওফস ... আমি লিঙ্কটি আপডেট করতে ভুলে গেছি এটি এখন কাজ করা উচিত। টিআইও (খালি ইনপুট)
রিলে


1

সি (জিসিসি) , 75 72 70 68 50 বাইট

i;f(s){for(i=31;++i<127;strchr(s,i)?:putchar(i));}

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


আপনি ||"স্ট্যান্ডার্ড" সি তে এই কাজটি করতে ব্যবহার করতে পারেন?
নীল

@ নীল হ্যাঁ || কাজ করে। তাই না?: "স্ট্যান্ডার্ড" সি এর অংশ?
ক্লাবল্যাঙ্ক

আমি সবসময় ভাবতাম এটি একটি সিসি এক্সটেনশন was
নিল

@ নীল এটি সঠিক ?:একটি জিএনইউ এক্সটেনশন। এটি ঝনঝন এবং টিসিসি তে পাশাপাশি কাজ করে।
ডেনিস

1

জেলি , 8 বাইট

সত্যি, 8 বাইট? দয়া করে বলুন আমি কিছু মিস করেছি!

32r126Ọḟ

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

কিভাবে?

32r126Ọḟ - Main link: list of characters s
32r126   - inclusive range from 32 to 126 = [32,33,...,125,126]
      Ọ  - cast ordinals to characters = list of printable characters
       ḟ - filter discard if in s

বিকল্পভাবে

“ ~‘r/Ọḟ - Main link
“ ~‘     - code-page indexes = [32,126]
    r/   - reduce by inclusive range = [32,33,...,125,126]
      Ọ  - cast from ordinals to characters = list of printable characters
       ḟ - filter discard if in s

যেহেতু এই চ্যালেঞ্জটি একটি নতুন পরমাণু যা সমস্ত মুদ্রণযোগ্য এএসসিআইআই অক্ষর দেয়, ØṖ3 টি বাইটের জন্য নিম্নলিখিত কাজটি চালু করে:

ØṖḟ

না আপনি কিছু মিস করেন নি।
এরিক আউটগল্ফার

1

কাঠকয়লা , 18 15 10 8 বাইট

Fγ¿¬№θιι

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সম্পাদনা করুন: পূর্ণসংখ্যার পরিবর্তে অক্ষরের উপর দিয়ে 3 বাইট সংরক্ষণ করা হয়েছে। যখন আমি অনুক্তিযুক্ত γভেরিয়েবলটি মুদ্রণযোগ্য এএসসিআইআই অক্ষর ধারণ করে তখন আরও পাঁচটি বাইট সংরক্ষণ করা হয়েছে । ভার্বোস মোডে @ ASCII- কেবল স্থির পূর্বনির্ধারিত ইনপুটগুলিতে যখন আরও 2 বাইট সংরক্ষণ করা হয়েছে (উত্তরটি এখনও যেমন স্থির থাকে ঠিক ততক্ষণে এটি অনলাইনেই চেষ্টা করুন যে অনলাইন লিঙ্কটি তখন কাজ করে না)।


8 বাইট (পূর্বনির্ধারিত ইনপুটগুলি তখন কাজ না করত)
এএসসিআইআই-

@ এএসসিআইআই-তারা কেবল ভার্বোস মোডে কাজ করছিল না ... তারা সম্ভবত সংক্ষিপ্ত মোডে কাজ করত, তবে আমি ভার্বোজের লিঙ্কগুলি পছন্দ করি।
নীল

0

গণিত, 35 বাইট

20~CharacterRange~126~Complement~#&

বেনামে ফাংশন। ইনপুট হিসাবে অক্ষরের একটি তালিকা নেয় এবং আউটপুট হিসাবে অক্ষরের একটি তালিকা প্রদান করে।



0

শর্টসি , 33 বাইট

i;AOi=31;++i<'~';strchr(*@,i)?:Pi

এই প্রোগ্রামে রূপান্তরগুলি:

  • A -> int main(int argc, char **argv) {
  • O -> for(
  • @ -> argv
  • P -> putchar
  • স্বয়ংক্রিয়ভাবে closingোকানো বন্ধ ));}

ফলাফল হিসাবে প্রদর্শিত প্রোগ্রাম:

i;int main(int argc, char **argv){for(i=31;++i<'~';strchr(*argv,i)?:putchar(i));}

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



0

ক্লোজার, 60 বা 49 বাইট

#(apply str(sort(apply disj(set(map char(range 32 127)))%)))

এই "প্রয়োগ" গুলি আমাকে হত্যা করছে: / ওহ, যদি কোনও তালিকা ফেরত দেওয়া ভাল হয় তবে এটি কিছুটা খাটো orter

#(sort(apply disj(set(map char(range 32 127)))%))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.