রিয়েল অদৃশ্য পাঠ্য মুদ্রণ করুন


15

আমার পূর্ববর্তী চ্যালেঞ্জ, মুদ্রণ অদৃশ্য পাঠ্যটি বেশ জনপ্রিয় ছিল, সম্ভবত এটি কতটা তুচ্ছ।

তবে আপনারা যারা আরও পর্যবেক্ষণ করেছেন তারা লক্ষ্য করেছেন যে আপনি সত্যিই অদৃশ্য পাঠ্যটি প্রিন্ট করছেন না, কারণ কেবল আউটপুট দিয়ে কী ইনপুট করা হয়েছিল তা পড়া অসম্ভব।

সুতরাং আমি বুঝতে পারলাম কীভাবে একটি বাস্তব অদৃশ্য পাঠ্য চ্যালেঞ্জ।

কেবল মুদ্রণযোগ্য এএসসিআইআই অক্ষর ( 0x20-0x7E) সমন্বয়ে একটি স্ট্রিং দেওয়া হয়েছে , প্রতিটি অক্ষরকে আলাদা ইউনিকোড অক্ষরে রূপান্তর করুন (ইউটিএফ -8 এনকোডিংয়ে) যেটি 95 টি মুদ্রণযোগ্য এএসসিআইআই অক্ষর নয় ( 0x20-0x7Eরেঞ্জের বাইরে কোনও ইউটিএফ -8 অক্ষর নয় )

ইনপুট

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

আউটপুট

প্রতিটি অক্ষরের সাথে ইনপুট স্ট্রিং একটি স্বতন্ত্র অ-মুদ্রণযোগ্য অক্ষর দ্বারা প্রতিস্থাপিত হয়। প্রতিটি প্রদত্ত চরিত্রের অবশ্যই একটি অন-প্রিন্টযোগ্য অক্ষর থাকতে হবে যা অন্য কোনও চরিত্রের বিকল্প হিসাবে ব্যবহৃত হয় না।

আপনি যদি মুদ্রণযোগ্য অক্ষরগুলি মুদ্রণ করতে অক্ষম হন তবে আপনি পরিবর্তে অক্ষরের মানগুলি আউটপুট করতে পারেন।

উদাহরণস্বরূপ যদি আপনার কোড সব ছোট হাতের প্রতিস্থাপন জন্য aসঙ্গে এর 0x01, আপনি ব্যবহার করতে পারেন না 0x01অন্য কোন অক্ষরের জন্য প্রতিস্থাপন হিসাবে।

আপনার কোডটিও অবশ্যই সংজ্ঞাবহ হতে হবে । এর অর্থ এই যে স্ট্রিংটি দেওয়া থাকলে Hello, সমস্ত ছোট হাতের অক্ষর lদিয়ে প্রতিস্থাপন করা হয় 0x03, আপনার কোড অবশ্যই অন্য ছোট স্ট্রিংয়ের lসাথে সমস্ত ছোট হাতের অক্ষর প্রতিস্থাপন করতে হবে 0x03

Testcases

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

input     -> output
"Hello"   -> [0x01, 0x02, 0x03, 0x03, 0x04]
"Hi!"     -> [0x01, 0x05, 0x06]
""        -> []
"   H   " -> [0x07, 0x07, 0x07, 0x01, 0x07, 0x07, 0x07]
"yo! "    -> [0x08, 0x04, 0x06, 0x07]

লিডারবোর্ড

নিয়মিত লিডারবোর্ড এবং ভাষার দ্বারা বিজয়ীদের একটি সংক্ষিপ্ত বিবরণ উভয়ই তৈরি করতে এখানে একটি স্ট্যাক স্নিপেট।


9
ইউটিএফ -8 চরিত্রের মতো জিনিস নেই: ইউটিএফ -8 ইউনিকোডের সিরিয়ালাইজেশন, চরসেট নয়। এবং যদি "অ-মুদ্রণযোগ্য" কোনও ইউনিকোড প্রসঙ্গে বোঝায়, এটি অবশ্যই "বরাদ্দকৃত কয়েক হাজার কোডপয়েন্টের মধ্যে 95 টি বাদে" এর চেয়ে অনেক সংকীর্ণ।
পিটার টেলর

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

3
কোন বিশেষ কারণে ইউটিএফ -8 প্রয়োজন?
ক্যালকুলেটরফলাইন

ইনপুট কি খালি থাকতে পারে?
ডেনিস

1
"আপনি যদি মুদ্রণযোগ্য অক্ষরগুলি মুদ্রণ করতে অক্ষম হন" এর জন্য +1
রবার্ট ফ্রেজার

উত্তর:


13

জেলি , 3 বাইট

O²Ọ

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

স্কোয়ার প্রতিটি কোডপয়েন্ট।


আমি জাপট সমাধানটির সাথে খুব অনুরূপ এসেছি, আশা করি আমি এটিকে স্কোয়ারিংয়ের পরিবর্তে কোডপয়েন্টকে ঘনক্ষেত্র দিয়েছি - আপনি আমার সাথে এটি পোস্ট করে দিয়েছিলেন?
শেগি

2
@ শেগি জাপট ≠ জেলি, যাতে আপনি এটি পোস্ট করতে পারেন।
এরিক আউটগল্ফার

চতুর সমাধান, স্কোয়ারিংয়ের কথা ভাবেন নি।
স্কিডসদেব

1
গ্র্যান্ড, কেবল নিশ্চিত হতে চেয়েছিল, পাছে আপনি ভেবেছিলেন আমি কেবল আপনার সমাধানটি ছড়িয়ে দিচ্ছি :)
শেজি

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

13

হোয়াইটস্পেস , 39 36 বাইট


  
   	  
 
  
 	
	 				  
	
  
 


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

ব্যাখ্যা

nssn  ; label 'loop'
ssstssn ; push 4 to use as a multiplication operand
sns   ; dup 4 to use as a heap address
sns   ; dup 4 to use as a heap address
tnts  ; getchar and store at address 4
ttt   ; retrieve the value at address 4
tssn  ; multiply the character value by 4
tnss  ; putchar output the new character
nsnn  ; jmp 'loop'

মূলত আমি -0 বা -1 দিয়ে গুণ করতে চেয়েছিলাম যেহেতু তারা হোয়াইটস্পেসে ঘোষণা করা সম্ভব সংক্ষিপ্ততম সংখ্যা। টিআইও -0 এবং +0 এর মধ্যে পার্থক্য করে না তাই এটি বাইরে। দুর্ভাগ্যক্রমে টিউটোরিয়াল / স্পেকটি কীভাবে চারটি টিআইও হিসাবে সঠিকভাবে নেতিবাচক মানের ব্যাখ্যা করা যায় তা সম্পর্কে অস্পষ্ট (সঠিকভাবে) অবৈধ যুক্তি সম্পর্কে ত্রুটি ছুঁড়ে দেয় যাতে এটি কোনও বিকল্পও নয়।

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


হোয়াইটস্পেস , 56 53 বাইট - অক্ষর ট্যাগ করতে মানচিত্র


  
   			                 
 
  
 	
	 				   	
  
 


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

ব্যাখ্যা

কার্যকরভাবে পূর্ববর্তী সংস্করণ হিসাবে একই পদ্ধতির ব্যতীত 0xE0000 ব্যবহার করে ধ্রুবক হিসাবে এবং গুণকের পরিবর্তে যোগ করে। এটি সম্পর্কিত ইউনিকোড ট্যাগ চরিত্রের (দৃশ্যমান U + E0000-U + E007F) দৃশ্যমান ASCII অক্ষরগুলিকে মানচিত্র করে। এই ব্যাপ্তির জন্য উদ্দেশ্যযুক্ত ব্যবহারটি একটি সরলখুলি ফাইলের পাঠ্যের ভাষাটি বোঝানো ছিল তবে ব্যবহারটি নিরুৎসাহিত করা হয়েছে। আপনি যদি 0x01 অক্ষরের সাথে স্ট্রিং উপসর্গ করেন তবে এই কোডটি বৈধ লেবেলগুলি আউটপুট দেবে।

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


5
অদৃশ্য পাঠ্য মুদ্রণের জন্য একটি অদৃশ্য প্রোগ্রাম ব্যবহার করে। আমি পছন্দ করি.
চিহ্নিত করুন

7

জাপট , 5 2 বাইট

cp

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


ব্যাখ্যা

     :Implicit input of string U
c    :Map over the character codes of the string.
p    :Square them.
     :Implicit output of result.

126 ** 3 == 2000376হুঁ , কাছাকাছি পরীক্ষার পরে, এটি মনে হয় , যা সীমা [0..1114111] এ নেই। আপনি এখনও বর্গক্ষেত্র করতে পারেন :) এটি কারণ ইউটিএফ -8 সেখানে শেষ হয়, যখন ইউটিএফ -16 চালিয়ে যায়।
এরিক আউটগল্ফার

1
নিবন্ধন করুন ইউটিএফ -8 এর সংজ্ঞা অনুসারে ইউটিএফ -16 এর ঠিক একই পরিসীমা রয়েছে। (তত্ত্ব অনুসারে, ইউটিএফ -8 কোডডপয়েন্টে 5 বা 6 বাইট ব্যবহার করে উচ্চতর কোডপয়েন্টগুলি সঞ্চয় করতে পারে তবে এটি অবৈধ))
মিঃ লিস্টার


4

ব্রেনলফ v0.6, 17 বাইট

VRl1-M[R.*>v]R&@

স্কয়ারগুলির প্রতিটি চর মান তারপরে মুদ্রণ করে।

-1 বাইট ধন্যবাদ এরিক আউটগলফার এর স্কোয়ারিং সমাধানকে

ব্রেনল্ফ v0.7, 6 বাইট [প্রতিদ্বন্দ্বী]

{.*}&@

এছাড়াও প্রতিটি মান স্কোয়ার করে মুদ্রণ করে তবে v0.7 এ "ফোরচ" {}লুপ রয়েছে


4

গণিত, 48 বাইট

FromCharacterCode[4Mod[Hash/@Characters@#,978]]&

ব্যাখ্যা:

                             Characters@#      & - Convert string to array of characters
                       Hash/@                    - Hash them all using default hash
                   Mod[                  ,978]   - apply a modulus which uniquely transforms each potential character's hash into a number
                  4                              - times by 4 to move values out of 0x20-0x7E.
FromCharacterCode[                            ]  - Convert array of numbers back to string

আকর্ষণীয়ভাবে দুটি মডুলাস বিকল্পের চেয়ে 1000 এরও কম যা 96 টি অক্ষরকে 96 টি অনন্য মানগুলিতে পরিবর্তিত করে মডুলাস 978 সর্বনিম্ন দুটি মান 7 হয় 33 হয়। ভাগ্যক্রমে 4 দ্বারা এটি এটিকে 28 এবং 132 এ রূপান্তর করে যা উভয়ই দৃশ্যমান সীমার বাইরে চলে যায়। আমি যদি 784 এর অন্যান্য মডুলাসটি ব্যবহার করি তবে সীমাগুলির বাইরে নম্বরগুলি সরিয়ে নিতে আমার 18 টি দিয়ে গুণ করতে হবে।

পরীক্ষা ক্ষেত্রে.

দ্রষ্টব্য: পলায়নের অক্ষর হিসাবে অতিরিক্ত ব্যাকস্ল্যাশ "এবং \। এছাড়াও 0x7E অক্ষরটি সঠিকভাবে পেস্ট করতে চায় বলে মনে হয় না।

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

আউটপুট: এখানে চিত্র বর্ণনা লিখুন

ব্যবহারের Hashহিসাবে সম্পর্কে এসেছিলেন ToCharacterCodeসত্যিই দীর্ঘ। তবে হ্যাশিং এটি প্রায় ব্যয়বহুল ছিল। এটি করার সহজ গণিতের উপায়টি হবে 49 বাইট:

FromCharacterCode[4ToCharacterCode@Characters@#]&

2

সিজেম , 8 5 বাইট

l95f+

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

প্রতিটি কোডপয়েন্টে 95 যোগ করে।


পরিবর্তে গুণ বা স্কোয়ার করার কোনও উপায় নেই?
NieDzejkob

@ নিডজেজেকোব না, এটি চরিত্রটি + লং = চিআর (অর্ডার (চরিত্র) + দীর্ঘ) এর উপর ভিত্তি করে। চরিত্র * দীর্ঘ = [চরিত্র] * দীর্ঘ। অক্ষর # দীর্ঘ = ত্রুটি (# সিজেমে এক্সপেনশনেশন হয়)।
এরিক দ্য আউটগল্ফার


2

পাওয়ারশেল, 32 31 বাইট

-1 নীল ধন্যবাদ, 99+ কে4*

[char[]]"$args"|%{[char](4*$_)}

প্রতিটি অক্ষর কোড দ্বারা 9 গুণ এবং এটি আবার মুদ্রণ।


আগ্রহের বাইরে, একটি অল্প সংখ্যার (4-9) কাজ দিয়ে গুণ করা হবে?
নিল

সর্বনিম্ন মুদ্রণযোগ্য 4 বার বৃহত্তম মুদ্রণযোগ্য এর চেয়ে বড়, এটি -1 - ধন্যবাদ!
কলস



1

দশমিক , 37 বাইট

91D31030030012255D412D590D543D301291D

ব্যাখ্যা:

91D             ; declare jump 1
    310         ; push user input to stack
    300         ; duplicate
    300         ; duplicate
    12255D      ; push EOF to stack
    412D        ; compare top two values, pop, push result
    5 90D 5     ; if result == true, quit
    43D         ; multiply top two values, pop, push result
    301         ; print
    2           ; pop
91D             ; goto jump 1

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


তাই শূন্যে ঝাঁপ দাও ( 90D) সমাপ্ত?
স্কিডদেব

নিখুঁতভাবে
এমডি এক্সএফ

1

গুগল শিটস, 68 বাইট

=ArrayFormula(Join("",IfError(Char(Code(Mid(A1,Row(A:A),1))^2),"")))

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

=ArrayFormula(Join("",Mid(A1,Row(A:A),1)))

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




0

পরিষ্কার , 25 বাইট

import StdEnv

map((+)'~')

আংশিক ফাংশন আক্ষরিক।

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

বাস্তবানুগভাবে:

f s = {# c+'~' \\ c <-: s}

একই ধরণের ( {#Char} -> {#Char}) এর একটি আনবক্সড অ্যারের উপরে আনবক্সড অ্যারে বোঝাপড়া । ক্লিনটি নির্ধারণ করতে সক্ষম করবে যে স্বতন্ত্রতা স্থানান্তরযোগ্য ( !u:{#Char} -> u:{#Char}) এবং আকারটি ইনপুট আকারের সমান। এর অর্থ হ'ল আপনি যদি পাস করেন তবে*String প্রতিটি চরিত্র ধ্বংসাত্মকভাবে আউটপুটে সংশ্লিষ্টটির সাথে আপডেট হবে, যার অর্থ কোনও মেমরি বরাদ্দ বা গতিবিধি সম্পন্ন হয়নি এবং গ্রাফ নোড পুরোপুরি পুনরায় ব্যবহার করা হবে।

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

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