"এবং তিনি বলেছিলেন, 'তবে এটি তার।'" এই বাক্যাংশটি মুদ্রণ করুন কেবলমাত্র বর্ণমালা ব্যবহার করে


50

And she said, 'But that's his.'কেবলমাত্র নিম্নলিখিত অক্ষরগুলি ব্যবহার করে বাক্যাংশটি মুদ্রণ করুন : abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ কোনও বিরামচিহ্ন বা অ-বর্ণমালা অক্ষর যাই হোক না কেন। আপনি যা প্রোগ্রামিং ভাষা চান তা ব্যবহার করতে পারেন। সাদা স্থান পুরোপুরি অনুমোদিত। সংক্ষিপ্ততম প্রোগ্রামের জয়।


আউটপুট হোয়াইটস্পেস সম্পর্কে কি? (শীর্ষস্থানীয় / পিছনে?)
অ্যাটিটনেট

2
ডার্ন, আমার এসোলাং সম্পূর্ণ করতে পারে না কারণ কেবলমাত্র আউটপুট উত্পাদন করার ক্ষমতা নেই a-zA-Z। তত্ত্বের মধ্যে আমি প্রয়োজনীয় নির্দেশাবলী তৈরি করতে wআচার এবং ভাল ব্যবহার করতে পারতাম E, তবে +-*,%'"একটিও (কমপক্ষে) একটি ব্যবহার না করেই নির্মাণ করা যায় না +-*,%'"0-9
ড্রাকো 18s

10
(programmer-of (language 'lisp))এটি অপছন্দ করে।
ম্যাথু রক

4
স্বীকার করতে হবে, আমি প্রথমে এটি বিশেষ আকর্ষণীয় মনে করি নি, তবে পুনরাবৃত্তি এবং অনন্য চরিত্রগুলির সংমিশ্রণটি এটি অনুকূলভাবে মজাদার করে তোলে (বিশেষত একটি স্ট্যাক ভাষার উপর!)। খুব সুন্দর.
brhfl

1
আউটপুটটিতে অতিরিক্ত সাদা স্থানের অনুমতি দেওয়া থাকলে আপনি কি স্পষ্ট করতে পারেন ? অতিরিক্ত পেছনের নতুন লাইনের মত? অথবা শুধুমাত্র হোয়াইটস্পেস উৎস , প্লাস বর্ণানুক্রমিক অক্ষর। একটি বেফুঞ্জ উত্তর রয়েছে যা অতিরিক্ত ট্রেলিং নিউলাইন দিয়ে মুদ্রণ করে।
পিটার কর্ডস

উত্তর:


75

হোয়াইটস্পেস , 417 414 349 265 বাইট

265 বাইট ধন্যবাদ কেভিন ক্রুইজসেনকে ধন্যবাদ

  							
  				   
   		 	
   		
   	 
  		   		 
 	  		
 	  		 
   			 
  		 	
   	 
 	  	 
 	  		 
 	  	
   				
  		  	  
  							
 	  	  
  				 	 
  		 
   		
  		 	
   		 	
 	  	 	
  		
   	 
 	  		
 	  		
  		 
   	   
  		  	 	

  
   		  		 
	   	
  
 


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

ব্যাখ্যা:

[S S T  T   T   T   T   T   T   N
_Push_-63_'][S S T  T   T   T   S S S N
_Push_-53_.][S S S T    T   S T N
_Push_13_s][S S S T T   N
_Push_3_i][S S S T  S N
_Push_2_h][S S T    T   S S S T T   S N
_Push_-70_space][S T    S S T   T   N
_Copy_0-based_3rd_s][S T    S S T   T   S N
_Copy_0-based_6th_'][S S S T    T   T   S N
_Push_14_t][S S T   T   S T N
_Push_-5_a][S S S T S N
_Push_2_h][S T  S S T   S N
_Copy_0-based_2nd_t][S T    S S T   T   S N
_Copy_0-based_6th_space][S T    S S T   N
_Copy_0-based_1st_t][S S S T    T   T   T   N
_Push-15_u][S S T   T   S S T   S S N
_Push_-36_B][S S T  T   T   T   T   T   T   N
_Push_-63_'][S T    S S T   S S N
_Copy_0-based_4th_space][S S T  T   T   T   S T S N
_Push_-58_,][S S T  T   S N
_Push_-2_d][S S S T T   N
_Push_3_i][S S T    T   S T N
_Push_-5_a][S S S T T   S T N
_Push-13_s][S T S S T   S T N
_Copy_0-based_3rd_space][S S T  T   N
_Push_-1_e][S S S T S N
_Push_2_h][S T  S S T   T   N
_Copy_0-based_3rd_s][S T    S S T   T   N
_Copy_0-based_3rd_space][S S T  T   S N
_Push_-2_d][S S S T S S S N
_Push_8_n][S S T    T   S S T   S T N
_Push_-37_A][N
S S N
_Create_Label_LOOP][S S S T T   S S T   T   S N
_Push_102][T    S S S _Add][T   N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

100
Whitespace is completely allowed.আমি দেখছি আপনি এটি আক্ষরিকভাবে গ্রহণ করেছেন।
বেনজামিন আরউখার্ট

3
আপনি আমাকে এটি মারলেন .. বেশ কয়েকটি জিনিস গল্ফ করা যেতে পারে, যদিও। :) আপনি NNNপ্রস্থান করার জন্য পিছনটি সরিয়ে ফেলতে পারেন , যেহেতু আপনি প্রিন্ট_চরের আগে অ্যাডটি করার সময় এটি একটি ত্রুটি নিয়ে ইতিমধ্যে থেমে গেছে, সুতরাং এটি জাম্প_ টো_বেল এর পরেও আসবে না। এছাড়াও, কেন স্টার্টটি সঞ্চয় করুন 63এবং এটিকে লুপে পুনরুদ্ধার করবেন? পরিবর্তে যোগ করার আগে আপনি কেবল এটি চাপ দিতে পারেন। এবং, কেন লেবেল-এনআর TTSSSSTN? একটি লেবেল এমনকি খালি থাকতে পারে, সুতরাং যখন আপনি কেবলমাত্র একটি লেবেল ব্যবহার করেন কেবলমাত্র NSSNলেবেল তৈরি করতে এবং লেবেলে NSNNলাফিয়ে ফেলা যথেষ্ট।
কেভিন ক্রুইজসেন

1
আমি উপরে প্রস্তাবিত পরিবর্তনগুলি সহ 318 বাইটএখানে হাইডাইলিং যুক্ত একই প্রোগ্রাম। এবং আপনি কীভাবে ধ্রুবক মান কেটেছেন 63? আমি এখানে 100% নিশ্চিত না যে এটি এখানে সবচেয়ে সংক্ষিপ্ততম ধ্রুবক। যদি তা হয় তবে আমার পূর্ববর্তী চ্যালেঞ্জের জন্য আমি লিখেছিলাম এমন আমার ধ্রুবক উত্পন্ন প্রোগ্রামের সাথে কিছু ভুল। :)
কেভিন ক্রুইজসেন

1
হ্যাঁ, আমি ঠিক বলেছি কনস্ট্যান্ট 102সবচেয়ে দক্ষ: 281 বাইট (বা এখানে হাইলাইট করা সহ )। (দ্রষ্টব্য: আমিও একটি কপি ব্যবহার করেছি এর মধ্যে জায়গার জন্য 4 বাইট সংরক্ষণ করার জন্য ehs dnA(এর মধ্যবর্তী স্থান থেকে অনুলিপি করা হয়েছে dias ehs)
কেভিন ক্রুইজসেন

3
ঠিক আছে, এখন আমি সম্পন্ন করেছি। :) 265 বাইট (বা এখানে হাইলাইট করা সহ )। কিছু অতিরিক্ত কপি যুক্ত করা হয়েছে। ( এখানে সম্পর্কিত
হোয়াইটস্পেসের

62

পার্ল 5 , 133 102 95 বাইট

s qqAnd she saidZ ZBut thatZs hisZZGjGGfq x
s qZqchr oct oct oct ord chopqge x
y qGjfqqdx
print

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

ব্যাখ্যা:

Regexes, মুদ্রণ এবং কাটা সব $_ডিফল্ট হিসাবে চলক প্রয়োগ ।

s qqAnd she saidZ ZBut thatZs hisZZGjGGfq

এর সাথে খালি স্ট্রিং প্রতিস্থাপন করে And she saidZ ZBut thatZs hisZZGjGGf

s qZqchr oct oct oct ord chopqge

Zবিবর্তনের ফলাফলের সাথে প্রতিটিকে প্রতিস্থাপন করে chr oct oct oct ord chop। এটি এর শেষ চরিত্রটিকে সরিয়ে দেয় $_, এর কীকোড নেয়, এটি তিনবার অষ্টাল হিসাবে ব্যাখ্যা করে এবং এটিকে আবার একটি চরিত্রে রূপান্তর করে। উদাহরণস্বরূপ, j→ 106 → 70 → 56 → 46 → .

প্রতিস্থাপনের যেভাবে কাজ করা হয়েছে তার কারণে, প্রতিস্থাপনের $_মূল্যায়নের সময় যে পরিবর্তনগুলি ঘটেছিল তা হেরে যায়, তাই $_এখন And she said, 'But that's his.'GjGGf

y qGjfqqd

সমস্ত মুছে দেয় G, jএবং fভিতরে $_


26
পার্ল না জানা, দেখে মনে হচ্ছে আপনি কেবল বাক্যটি টাইপ করার চেষ্টা করেছেন, তবে প্রক্রিয়াতে আপনার বিড়ালের সাথে একাধিক লড়াই হয়েছে
popctrl

2
আমি এই ওয়েবসাইটে লিখিত দেখেছি এটি কোডের সবচেয়ে সুন্দর টুকরো হতে পারে এবং আমি বলেছি পার্লকে চিনি এমন কেউ।
সিলভিও মায়োলো

1
সম্পর্কিত, তবে আপনি -2 অক্ষরের printসাথে প্রতিস্থাপন করতে পারেন say। বর্তমান মেটা sensকমত্য বলছে কমান্ড লাইনের পতাকাগুলি -M5.010বাইট গণনা অনুসারে গণনা না করে।
সিলভিও মায়োলো

34

> <> , 916 915 903 বাইট

প্রথমে আমি ভেবেছিলাম> <> তে একটি সমাধান অসম্ভব, তবে তখন আমি বুঝতে পেরেছিলাম ... কাকে শর্তসাপেক্ষ বা লজিক নিয়ন্ত্রণের দরকার? : ডি

fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffloffffffffffffffffffffffffffffffffffffffffffffflopppgloppppppppppppppppppppppggloffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffflopppggloploppppppppppppppppppppppploffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffflopppppplofffffffflopggloppppppppppppppppppgglopppplofffffffloffffffffffffffffffffffffffflofffffffffffffffffffffffffffffffffffffffffffffffffffloglopppppppppppppppppppppppppppplofffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffflopppploppgloffffffffffffffffffflopppppppppppppppppppppppppgglofffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffflopppppppppppppppppppppppppppgglofffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffflofloffffffffffloppppppppppppppppppppppploppgloio

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

আমি বারবার স্ট্যাকের জন্য সংখ্যাগুলি (15 নম্বর) টিপুন, তারপরে স্ট্যাকের দৈর্ঘ্যটি ধাক্কা দিন এবং সেই ASCII মান সহ অক্ষরটি মুদ্রণ করুন। আমার যদি স্ট্যাকের দৈর্ঘ্য সঙ্কুচিত করা দরকার হয় তবে আমি স্ট্যাকটি একবারে ব্যবহার করে একবারে তিনটি মানকে সঙ্কুচিত করি pবা gআমি লক্ষ্যগুলির তিনটির মধ্যে থাকি if প্রোগ্রামটি i(ইনপুট) কল করে শেষ হয় , যা -1কোনও ইনপুট নেই বলে ধাক্কা দেয় , তারপরে একটি ত্রুটির কারণ হিসাবে এটি মুদ্রণ করে।

এটি পাইথন 3 প্রোগ্রাম আমি সমাধানটি তৈরি করতে ব্যবহার করতাম একবার এটি কীভাবে করবেন তা ভেবেছিলাম:

s = "And she said, 'But that's his.'"
L = [0]+[ord(c) for c in s]
#print(L)
M = L[1:]+[0]
D = [x[1]-x[0] for x in zip(L,M)]
#print(D)
while D:
	n=D.pop(0)
	if not D:print('io',end='');exit()
	if n>0:print('f'*n,end='lo')
	else:
		while n<-2:print('p',end='');n+=3
		print('g'*-n,end='lo')

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


5
এটি হোয়াইটস্পেস সমাধানের সঠিক পাল্টা পয়েন্ট! আমার কাছ থেকে একটি +1 রাখুন, আমি উত্পন্ন কর্মসূচিরও প্রশংসা করি ...
ফ্রান্সেস্কো

শেষ অধ্যায় সম্পূর্ণভাবে সতর্কতা অবলম্বন ব্যবহার সঙ্গে মুছে ফেলা হতে পারে pস্ট্যাক একটি 59 তৈরি করার সময় স্থান থেকে উঠে চলন্ত: sমধ্যে said, তাহলে এটি কোডে পথে ডাউন থেকে স্থান dথেকে ,। (দ্রষ্টব্য যে (15,15) এর পয়েন্ট অনুসারে 15 রয়েছে))
নাইট্রডন

প্রকৃতপক্ষে, আপনি আপত্তিজনকভাবে ব্যবহার করতে পারেন lএবং p(10,10) - (15,15) আয়তক্ষেত্রে বেশ কয়েকটি দরকারী চরিত্র রাখতে পারেন, তবে এটি gযেখানে আরও সুবিধাজনক সেগুলি দিয়ে তাদের পুনরুদ্ধার করুন ।
নাইট্রডন

এটা সত্যিই ভাল ধারণা। এটি <>> এভাবে চিন্তা করা এত কঠিন। এটি বিএফ
mbomb007

আমি আমার নিজের উত্তর পোস্ট করেছি: কোডগল্ফ.স্ট্যাকেক্সেঞ্জাওটা
186916

28

আইবিএম পিসিতে 8086 বিধানসভা, 1463 845 664 বাইট

স্পষ্টকরণ: আসল সমাবেশ ভাষার উত্স হ'ল এন্ট্রি, উত্পন্ন মেশিন কোড নয়।

অসুবিধাটি হ'ল বেশিরভাগ x86 নির্দেশাবলীর (যেমন ADD, SUB, JMP, শর্তযুক্ত জাম্পস, মেমরি অ্যাক্সেস) দুটি আর্গুমেন্ট থাকে এবং তাই কমা প্রয়োজন, বা একটি মেমরি ঠিকানা প্রয়োজন। সুতরাং, আমরা সংযোজন, বিয়োগ, ifs বা লুপগুলি ব্যবহার করতে পারি না!

আমার প্রথম প্রয়াসের সময় আমি ইনক্রিমেন্ট, হ্রাস, গুণ, ভাগ, বিভাগ, বাইট-ট্রিকস এবং অস্পষ্ট বিসিডি নির্দেশাবলী (এএএ, ডিএএস এর মতো) সংমিশ্রণ ব্যবহার করে সংখ্যাগুলি "নির্মাণ" করতে সক্ষম হয়েছি। এর পরে, আমি বুঝতে পারি যে এই ধারণাটি স্ব-পরিদর্শনকারী এবং স্ব-সংশোধনকারী কোড তৈরি করতে ব্যবহার করা যেতে পারে।

  • চেষ্টা 1. (1463 বাইট)

    ASCII কোড এবং স্ক্রিন বাফার 0xb800 ঠিকানা নির্মাণের জন্য উপলভ্য নির্দেশাবলী ব্যবহার করুন। অনুক্রমের প্রতিটি চরিত্রের গণনা হাতে গল্ফ দিয়েছিল।

  • চেষ্টা 2 (সম্পূর্ণ নয়)

    বুঝতে পেরেছি 0x40-0x5f ব্যাপ্তিতে প্রতিটি পূর্ণসংখ্যার জন্য একটি অপকোড রয়েছে। এই ব্যাপ্তিতে এজেড অন্তর্ভুক্ত রয়েছে। সুতরাং উদাহরণস্বরূপ INC CX 0x41 = 'A' এর সাথে মিলে যায়। (এই অপকোড টেবিলটি খুব কার্যকর)

    আমি 3 "ডেটা" স্ট্রিংগুলি নির্মাণ করার চেষ্টা করেছি এবং এগুলিকে একে অপরের শীর্ষে স্থাপন করেছি। প্রথমটি হ'ল (বড় হাতের অক্ষর), দ্বিতীয়টি "0x60-0x7f জোনে (ছোট হাতের অক্ষরে) স্থানান্তরিত" এবং সর্বশেষ "স্থানান্তরিত" 0x20-0x3f জোনে (যতিচিহ্ন)।

    স্ব-সংশোধনকারী কোড ডেটা ধরে পুনরাবৃত্তি করতে একটি লুপ বা তিনটি উত্পাদন করতে পারে।

  • প্রচেষ্টা 3. (845 বাইট)

    পূর্ববর্তী পদ্ধতির মতো তবে ডেটা কাটাতে, স্ট্রিংটি কেবল একবার এনকোড করা হবে, অক্ষর সেটগুলিতে স্যুইচ করতে "নিয়ন্ত্রণের অক্ষর" মিশ্রিত হবে।

  • চেষ্টা 4 (664 বাইট)

    শাখাগুলি মোকাবেলা করার জন্য পুরোপুরি প্রচুর পদক্ষেপের প্রয়োজনীয় নির্দেশাবলীর নিয়ন্ত্রণ থেকে কীভাবে মুক্তি পাবেন? কেবল মাত্র দুটি বড় হাতের অক্ষর ব্যবহার করা হয়েছে বলে আমি ভাবলাম যে 0x40-0x4f রেঞ্জ এবং 0x90-0x9f রেঞ্জ (0xc0 থেকে বিয়োগ করে) বিরামচিহ্ন ব্যবহার করে ছোট ছোট অক্ষরগুলি এনকোড করতে আমি অপকোড টেবিলটি "ফ্লিপ" করতে পারি কিনা। "এ" এবং "বি" আলাদাভাবে বসতে পারে।

    তবে 0x90-0x9f পরিসরে কেবল অর্ধেক অপকডগুলি ব্যবহারযোগ্য এবং তারা প্রয়োজনীয়গুলির সাথে লাইন রাখেনি। তারপরে আমি ভেবেছিলাম সম্ভবত আমি কোনও এক্সওআর ব্যবহার করে তাদের এলোমেলো করে দিতে পারি এবং আমি কাজ করে এমন একটি পেয়েছি। এবং এটি এখানে।

Golfed:

REP LODSB
PUSH CX
PUSH CX
POP AX
INC CH
PUSH CX
POP DI
DEC AX
DEC AX
REPNE SCASB
REPNE SCASB
PUSH DI
REPNE SCASB
PUSH DI
REPNE SCASB
PUSH DI
POP SI
POP DI
DEC DI
LODSB
NOT AL
STOSB
POP CX
DEC CH
LODSB
NOT AL
STOSB
LODSB
AAA
STOSB
INC DI
LODSB
NEG AL
STOSB
LODSB
NOT AL
PUSH AX
PUSH AX
INC SP
POP ES
INC SP
POP DI
LODSB
NOT AL
PUSH AX
POP BX
NEG AL
STOSB
INC DI
LODSB
DEC AL
NEG AL
DIV BH
PUSH AX
POP DI
LODSB
STOSB
RET
DEC BL
PUSH CS
STOSB
PUSH DS
INC DI
INC AX
POP SI
PUSH SP
NOP
INC BP
POP AX
PUSH DI
NOP
INC BP
PUSH BX
POP BX
PUSH SP
PUSHF
NOP
CWD
PUSH DX
INC DI
INC SP
NOP
INC SP
POP AX
PUSH BX
INC SP
CWD
INC BP
NOP
POP AX
POP BX
INC BP
SAHF
CWD
SCASB
INC DX

সাথে একত্রিত

nasm golf.asm -o golf.com

এবং ডসবক্সে চালান (প্রথমে সিএলএস চালান)। এটা এমন দেখতে:

নমুনা আউটপুট

মন্তব্য করেছে:

; ASSUME DS = ES = CS
; ASSUME IP = 0x0100
; true for .COM file

; We treat 0xFE as a special marker that we scan for
; This marks our patch zone and the start of our data

; We also use it as a cheap trick to get a constant 0x1f
; into CX

; 0xFE is the first byte of INC or DEC instructions
; that operate on half-word registers (AL, BL, CH etc.)
; WATCH OUT! Adding these breaks the scan


; Can't assume any register contains zero
; so use this trick to zero out CX
REP LODSB

PUSH CX ; needed later

; zero AX
PUSH CX
POP AX

INC CH
PUSH CX
POP DI ; 0x100, where our code starts

DEC AX
DEC AX ; AL = 0xFE, our marker (AH = 0xFF)

REPNE SCASB ; skip the INC CH above
REPNE SCASB ; find the DEC CH located at 0x10E

; we will later need 0xF, the char count minus the 'A'
PUSH DI ; DI = 0x10F

REPNE SCASB ; find the patch position
PUSH DI

REPNE SCASB ; find the next 0xfe; our data section
PUSH DI
POP SI ; load data from here

POP DI ; store data to the patch position
DEC DI

; patch in XOR
; XOR is 0x34, start with 0xCB
; second byte of DEC BL is 0xCB
LODSB
NOT AL
STOSB

POP CX ; get 0x0f in CX for our strlen
DEC CH

; patch in our XOR arg
; it is 0xF1 (take 0x0E and NOT it)
LODSB ; 0x0E (PUSH CS)
NOT AL
STOSB

; ADD is 0x00 (take 0xAA, apply weird AAA behaviour)
; this also zeroes AH
LODSB ; 0xAA (STOSB)
AAA
STOSB

INC DI ; skip next instruction byte

; LOOP is 0xE2
LODSB ; 0x1E PUSH DS
NEG AL
STOSB


; get b800 in ES (address of screen buffer)
; first get 0x47 in AL (INC DI)
LODSB  ; get 0x47 (INC DI)
NOT AL ; NOT 0x47 = 0xb8
; AX = 0x00b8 (bytes backwards)

PUSH AX
PUSH AX
; stack contains 0xb8 0x00 0xb8 0x00
; stack off-by-1 trick
INC SP
; now POP gives you 0xb800
POP ES
INC SP ;and clean up after ourselves

; store 0 in DI ***** PUSHED AT START OF PROGRAM ***
POP DI


LODSB ; get our magic 0xC0 (0x40 INC AX)
NOT AL
PUSH AX
POP BX

NEG AL ; NOT and +1 to get 0x41 ("A")


; charloop:
STOSB
INC DI
LODSB
DEC AL ; XOR
NEG AL ; modify this into an ADD AL, BL
DIV BH ; modify this to LOOP back to charloop

; doesn't print the last character
; but the last character turns into the address where 'B'
; is supposed to go

PUSH AX
POP DI
LODSB ; "B"
STOSB

; graceful exit this time ;)
RET


; *** DATA SECTION ***

         ; PURPOSE

DEC BL   ; 0xFE marks data section, 0xCB for XOR
PUSH CS  ; for XOR arg
STOSB    ; for ADD
PUSH DS  ; for LOOP
INC DI   ; 0x47 -> for 0xb800

INC AX   ; for magic number but also "A"


POP     SI ;n
PUSH    SP ;d
NOP        ;
INC     BP ;s
POP     AX ;h 
PUSH    DI ;e
NOP        ;
INC     BP ;s
PUSH    BX ;a
POP     BX ;i
PUSH    SP ;d
PUSHF      ;,
NOP        ;
CWD        ;'
PUSH    DX ;B
INC     DI ;u
INC     SP ;t
NOP        ;
INC     SP ;t
POP     AX ;h
PUSH    BX ;a
INC     SP ;t
CWD        ;'
INC     BP ;s
NOP        ;
POP     AX ;h
POP     BX ;i
INC     BP ;s
SAHF       ;.
CWD        ;'

SCASB     ; treated as char but turns into screen address!
INC DX    ; "B"

হুঁ। আমি অফসেট 0x3e থেকে শুরু করে দুটি সমাবেশ উত্স থেকে আলাদা .COM ফাইলগুলি পাচ্ছি। সম্পাদনা করুন - এনভিএম পার্থক্যটি খুঁজে পেয়েছে: মন্তব্য করা সংস্করণে 117 লাইনটি নিরক্ষিত INC AXঅবস্থায় রয়েছে INC AL
গ্যাস্ট্রোপনার

1
পরিবর্তে আমি সম্পূর্ণ বর্ণানুক্রমিক বাইনারি দেখতে চাই। :-)
পিটার ফেরি

1
আপনি যদি এনএএসএমকে পছন্দের এসেমব্লার হিসাবে লক করতে স্বাচ্ছন্দ্য বোধ করেন তবে আপনি label1 dbনিজের লাইনে লেবেল তৈরি করতে পারেন । এটি একটি সতর্কবার্তা দেবে, তবে কোনও ত্রুটি নেই।
গ্যাস্ট্রোপনার

1
@ গ্যাস্ট্রোপনার ভাল যা এটি খুব সহজ করে তুলবে। : পি সে সম্পর্কে জানতেন না, ধন্যবাদ! হতে পারে আমার ভাষার নাম পরিবর্তন করে রাখা উচিত "এমন কিছু যা আপনি DEBUG.COM এ খাওয়াতে পারেন"। যা ঘটনাক্রমে আমি এটি ডিবাগ করতাম। এক্সডি
আর্টেলিয়াস

1
@ পিটারকর্ডস এখন এটি স্ব-সংশোধনকারী!
আর্টেলিয়াস

23

পার্ল 6 , 1299 1272 1220 1215 বাইট

-২২ বাইটের জন্য গ্রিমিকে ধন্যবাদ।

-52 বাইট কারণ আমাদের প্রথম দিকে খরগোশের কান প্রয়োজন ছিল না।

জো কিং -5 বাইট জন্য ধন্যবাদ।

print chr flip chars i x chars i xx pi
and print lc chr chars NaN x chars cis pi
and print lc chr chars e x e x e
and print chr chars i x e x e x e
and print lc chr flip chars exp i
and print lc chr chars NaN x tau x e x e
and print chr chars chop NaN x e lcm chars e
and print chr chars i x e x e x e
and print lc chr flip chars exp i
and print lc chr flip chars i x chars i xx pi
and print chr chars False x pi x ceiling tau
and print lc chr chars e x e x e
and print chr chars i xx chars NaN x pi
and print chr chars i x e x e x e
and print chr chars chop False x e x e x e
and print chr chars chop NaN xx chars e
and print lc chr chars e x chars False
and print lc chr chars chop e x chars False
and print chr chars i x e x e x e
and print lc chr chars chop e x chars False
and print lc chr chars NaN x tau x e x e
and print lc chr flip chars i x chars i xx pi
and print lc chr chars chop e x chars False
and print chr chars chop False x e x e x e
and print lc chr flip chars exp i
and print chr chars i x e x e x e
and print lc chr chars NaN x tau x e x e
and print chr chars False x pi x ceiling tau
and print lc chr flip chars exp i
and print chr chars NaN xx tau x e
and say chr chars chop False x e x e x e

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

একটি পেছনের নতুন লাইনের সাথে স্ট্রিং আউটপুট করে। যদি আপনি এটি না চান তবে সর্বশেষটি sayএকটি দ্বারা প্রতিস্থাপন করুন print। আপনি উত্সে নতুন লাইনের স্থানগুলিও প্রতিস্থাপন করতে পারেন।

ব্যাখ্যা

এই কোডটি অক্ষর দ্বারা স্ট্রিং অক্ষর মুদ্রণ করে। প্রতিটি চরিত্রটি chrফাংশনে উপযুক্ত অক্ষর কোডটি খাওয়ানো এবং lcপ্রয়োজনে এটিকে ছোট করে তৈরি করা হয় ।

বর্তমানে, সমস্ত মানগুলি এর মধ্যে সঠিক অক্ষরের একটি স্ট্রিং তৈরি করে উত্পন্ন হয়; কিছু ক্ষেত্রে, অক্ষরের সংখ্যাটি লক্ষ্য অক্ষর কোডের বিপরীত। গাণিতিক ফাংশন যেমন logএবং expসরাসরি ব্যবহার করা তাত্ত্বিকভাবে হওয়া উচিত, তবে এগুলি ব্যবহার করা আমার পক্ষে খুব সহজ মনে হয়নি।

সংখ্যার হিসাবে ব্যবহারের জন্য, আমরা e, piএবং tau; এর ডানদিকে xবা xxএগুলি নিখুঁতভাবে মেঝেতে সজ্জিত। তাদের সবার স্ট্রিং উপস্থাপনায় 17 টি অক্ষর রয়েছে, তাই আমরা eন্যূনতম অক্ষর গণনার জন্য ব্যবহার করি । আমাদের i(4 টি অক্ষর), False(5 টি অক্ষর) এবং NaN(3 টি অক্ষর) রয়েছে। আমরা এর সাথে স্ট্রিং দৈর্ঘ্যকে বহুগুণ করতে পারি x; xxডান হাত দ্বারা স্ট্রিং দৈর্ঘ্য এক এবং এক যোগ করে। chopআমরা লক্ষ্য থেকে এক দূরে থাকলে স্ট্রিং থেকে একটি চরিত্রকে সরিয়ে দেয়।

মুদ্রণ বিবৃতিগুলি ব্যবহার করে এক সাথে শৃঙ্খলিত হয় and, যার যথেষ্ট কম নজির রয়েছে। এটি প্রায় একটি অলৌকিক ঘটনা এটি বিদ্যমান; অন্যথায়, আমাদের অবৈধ সেমিকোলন ব্যবহার করতে হবে।

আমি হাতের অক্ষরগুলির জন্য প্রকাশ পেয়েছি। সংক্ষিপ্ত অভিব্যক্তিগুলি খুঁজে পাওয়ার জন্য তাদের জন্য প্রোগ্রাম্যিকভাবে অনুসন্ধান করা উপযুক্ত।



উপায় দ্বারা, @ জোকিং, আপনি হাত দ্বারা সংক্ষিপ্ত প্রকাশগুলি অনুসন্ধান করেছেন বা সহায়তা করার জন্য আপনি কোনও প্রোগ্রাম ব্যবহার করেছেন?
বিবি 9৪

1
হাত দিয়ে আমি ভয় পাই। একটি অ্যালগোরিদমিক উপায় সম্ভবত খুব কঠিন হবে না
জো কিং


@ গ্রিমি চতুর, তবে দুর্ভাগ্যক্রমে কেবলমাত্র সম্ভব কারণ আপনি যে জিরো প্রস্থ স্থানটি ব্যবহার করছেন তা কোনও শ্বেত স্থান নয়
জো কিং

17

প্রস্থ , 66 64 বাইট

QaaGmwmiimaGcwWiimawAGawmfciiiGaFmAmFiimFGcwAmFiGmaiiGcGamafFiGQ

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

ডিবাগ প্রিন্ট। স্টাডাউটে মুদ্রণ করতে, wwকোডের শেষে যুক্ত করুন , যা স্ট্যাকের শীর্ষে পপ এবং আউটপুট দেয়।

ব্যাখ্যা

প্রস্থে, প্রতিটি সারণী এই টেবিল অনুসারে এটি কতটা "প্রশস্ত" হয় তার উপর ভিত্তি করে একটি সংখ্যার সাথে সংযোগ স্থাপন করে । এটি প্রতিটি অক্ষরকে 0 থেকে 9 পর্যন্ত একটি সংখ্যা নির্ধারণ করে Then তারপরে, এই সংখ্যাগুলি আসলে কোড সম্পাদন করতে ব্যবহৃত হয়।

বিশেষত, ম্যাচগুলির চেয়ে একটি চিঠি 7একটি স্ট্রিং আক্ষরিক শুরু করবে। এটি একবারে দুটি অক্ষরের সেট পড়বে, যতক্ষণ না এটি আবার মূল চিঠিটি পড়ে। দুটি অক্ষরের প্রতিটি সেট তাদের প্রস্থের সংখ্যায় রূপান্তরিত হবে, 0 এবং 99 এর মধ্যে দশমিক সংখ্যা হিসাবে পড়বে এবং যে অক্ষরটি তারা সমান হবে তা নিম্নলিখিত স্ট্রিংয়ে তাদের সূচক হবে:

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

উদাহরণস্বরূপ, এর সূচক !1, তাই 01সঠিক প্রস্থের সংখ্যাগুলি হবে। সুতরাং, if, iI, jt, ইত্যাদি সমস্ত একটি স্ট্রিং এর আক্ষরিক করতে সম্পর্কিত হবে !

এই ক্ষেত্রে, আমি Qউদ্ধৃতি চিহ্ন হিসাবে ব্যবহার করে প্রয়োজনীয় আউটপুটটির 31 টি অক্ষর যথাযথ অক্ষরে অনুবাদ করেছি । প্রোগ্রামটি শেষ হয়ে গেলে স্ট্যাকের শীর্ষটি ডিবাগ করতে মুদ্রিত হয়।


এটি এখনও সংক্ষিপ্ততম। আমার মনে হয় আপনি জিততে পারতেন!
ব্লু-ম্যানেদ হক হক

14

x86 মেশিন কোড (32-বিট), 256 বাইট

আমি যখন আমার কোডপেজ 437 কনসোলে আমার কোড মুদ্রণ করি তখন আমি নিম্নলিখিতটি দেখি

j XI a I a I a jbZ      Q fiQ Gf a f    Q I a I a I a I a h hisZ        Q I a I a I a I a hBP  Z        Q iQ
y       Q  a I a I a I a h thaZ Q I a I a I a Ih ButZ   Q  a I a I a I a fhu fZf        Q iQ g  S       Q  a I a I a I a hsaidZ Q I a I a I a I a hshe Z        Q I a I a I a I a hAnd Z        Q TZBX b 

এটিতে কিছু শ্বেতস্পেস অক্ষর রয়েছে, সুতরাং আমি যখন সমস্ত ট্যাব অক্ষর এবং সমস্ত অবিচ্ছেদ্য স্থান অক্ষর (কোড 255 সহ) দ্বারা প্রতিস্থাপন করি তখন এখানে একই কোডটি থাকে *:

j XI a I a I a jbZ→Q fiQ Gf a f→Q I a I a I a I a h hisZ→Q I a I a I a I a hBP  Z→Q iQ →→y →Q  a I a I a I a h thaZ→Q I a I a I a Ih ButZ→Q  a I a I a I a fhu fZf→Q iQ g→S →Q  a I a I a I a hsaidZ→Q I a I a I a I a hshe Z→Q I a I a I a I a hAnd Z→Q TZBX*b*

Hexdump:

6a 20 58 49 20 61 20 49 20 61 20 49 20 61 20 6a
62 5a 09 51 20 66 69 51 20 47 66 20 61 20 66 09
51 20 49 20 61 20 49 20 61 20 49 20 61 20 49 20
61 20 68 20 68 69 73 5a 09 51 20 49 20 61 20 49
20 61 20 49 20 61 20 49 20 61 20 68 42 50 20 20
5a 09 51 20 69 51 20 09 09 79 20 09 51 20 20 61
20 49 20 61 20 49 20 61 20 49 20 61 20 68 20 74
68 61 5a 09 51 20 49 20 61 20 49 20 61 20 49 20
61 20 49 68 20 42 75 74 5a 09 51 20 20 61 20 49
20 61 20 49 20 61 20 49 20 61 20 66 68 75 20 66
5a 66 09 51 20 69 51 20 67 09 53 20 09 51 20 20
61 20 49 20 61 20 49 20 61 20 49 20 61 20 68 73
61 69 64 5a 09 51 20 49 20 61 20 49 20 61 20 49
20 61 20 49 20 61 20 68 73 68 65 20 5a 09 51 20
49 20 61 20 49 20 61 20 49 20 61 20 49 20 61 20
68 41 6e 64 20 5a 09 51 20 54 5a 42 58 ff 62 ff

এটি কীভাবে কার্যকর হয় সে সম্পর্কে কিছু ব্যাখ্যা:

দরকারী নির্দেশাবলী হ'ল:

  • push imm8, push imm16এবং push imm32, popধ্রুবক উত্পাদনের পরে । ahবাইট ( imm8) চাপ দেওয়ার সময় এটি শূন্য (ইন ) তৈরি করতে পারে ।
  • and [ecx+32], ah- আহ = 0 ধরে নিয়ে এটি বাইটটি শূন্যে সেট করে। এটি ঠিক তাই ঘটে যায় যে আউটপুট স্ট্রিংয়ের দৈর্ঘ্য 32 হয়, সুতরাং কোডটি শুরু থেকে শুরু পর্যন্ত বাফারটি পূরণ করে।
  • or [ecx+32], edx- ধরে নিচ্ছি আউটপুট বাইট শূন্যে সেট করা আছে, এই অনুলিপিগুলি edx(4 বাইট) আউটপুটে আছে। আমি বাফারের শেষের dxপরিবর্তে পরিবর্তে একটি বৈকল্পিক ব্যবহার করি edxকারণ এটি আউটপুট বাফারের বাইরে লেখা উচিত নয়। কোডের সীমাবদ্ধতা এইভাবে একক বাইটগুলি লেখা অসম্ভব করে তোলে!
  • imul edx, [ecx+32], whatever- এটি মূল স্ক্র্যাম্বলিং ধারণা। পর্যাপ্ত এনট্রপি [ecx+32]এবং যেকোন সংখ্যা সহ এটি কোনও আউটপুট উত্পন্ন করতে পারে। আমি এটি প্রয়োজনীয় মানগুলির 2 বা 3 বাইট তৈরি করতে ব্যবহার করি। কিছু জটিলতা হ'ল, আউটপুটে এটি লেখার সময়, এটি ORইতিমধ্যে যা আছে তা দিয়ে যৌক্তিক করতে হবে। এটি কখনও কখনও আবার স্মৃতি শূন্য করা আবশ্যক করে তোলে।
  • jmpনির্দেশের একটি বৈকল্পিক ফিরে আসতে ব্যবহৃত হয়। আমি এটিকে বেছে নিয়েছি কারণ এর এনকোডিংটি 0xff, যা কোডপেজ ৪৩7 এর একটি অবিচ্ছিন্ন জায়গার সাথে সম্পর্কিত the বিধিগুলির উপর কিছুটা প্রসারিত, তবে অন্যথায় আমি মনে করি কাজটি অসম্ভব ...

এসেম্বলির সোর্স কোড এবং এটি পরিচালনা করে এমন একটি সি প্রোগ্রামের সাথে (ভিজ্যুয়াল স্টুডিও সিনট্যাক্স ব্যবহার করে):

#include <stdio.h>

__declspec(naked) void __fastcall doit(char* buf)
{
    __asm {
        push ' '
        pop eax

        dec ecx
        and [ecx+32], ah    // terminating 0 byte

        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah

        push 98
        pop edx
        or [ecx+32], edx
        imul dx, [ecx+32], 26183
        and [ecx+32], ah
        or [ecx+32], dx    // two bytes: [.']

        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        push 'sih '
        pop edx
        or [ecx+32], edx    // 4 bytes: [ his]

        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        push 538988610
        pop edx
        or [ecx+32], edx
        imul edx, [ecx+32], 544803081
        or [ecx+32], edx // 1 junk byte and 3 good bytes: (t's)

        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        push 'aht '
        pop edx
        or [ecx+32], edx    // 4 bytes: [ tha]

        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        push 'tuB '
        pop edx
        or [ecx+32], edx    // 1 junk byte and 3 good bytes: [But]

        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        push word ptr 8309
        pop dx
        or [ecx+32], dx
        imul edx, [ecx+32], 542312807
        or [ecx+32], edx    // 1 junk byte and 3 good bytes: [, ']

        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        push 'dias'
        pop edx
        or [ecx+32], edx    // 4 bytes: [said]

        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        push ' ehs'
        pop edx
        or [ecx+32], edx    // 4 bytes: [she ]

        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        dec ecx
        and [ecx+32], ah
        push ' dnA'
        pop edx
        or [ecx+32], edx    // 4 bytes: [And ]

        push esp
        pop edx
        inc edx

        pop eax
        jmp dword ptr[edx-1]
    }
}

int main()
{
    char buf[100];
    doit(buf);
    puts(buf);
}

এটি আমার কাছে পুরোপুরি গল্ফড বলে মনে হচ্ছে না। নিশ্চয় আপনি লুপ ব্যবহার করে একাধিক অভিন্ন নির্দেশের পুনরাবৃত্তি না করে বেশ কয়েকটি বাইট সংরক্ষণ করবেন। যে সমস্ত dec ecx+ and [ecx+32], ahস্টাফ ফ্যাক্টর করা যায়।
কোডি গ্রে

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

1
@ অ্যান্টোলিগ এটি স্ব-সংশোধনকারী কোডের বিষয়ে আপনার পরীক্ষার পরিবেশের অবস্থান সম্পর্কে কী নেমে আসতে পারে। অথবা আপনি স্ট্যাকের উপর নির্মিত কোডটি কার্যকর করার বিষয়ে এর মতামত।
গ্যাস্ট্রোপনার

চর কি 0xff"কোনও বিরামচিহ্ন বা বর্ণমালাবিহীন অক্ষরের যা কিছু নেই" লঙ্ঘন করে না ?
Val


13

পোস্টস্ক্রিপ্ট, 889 874 837 835 বাইট

currentflat string dup rrand
count dup count count mul mul xor count count mul count dup mul exch count
count copy count copy count copy count copy count copy
add and sub put print
and sub add put print
sub sub add put print
mul or xor put print
idiv xor add put print
or xor add put print
mod idiv add put print
mul or xor put print
idiv xor add put print
sub and add put print
or and add put print
sub sub add put print
pop add sub put print
mul or xor dup copy put print
mod mul sub put print
add or xor put print
idiv add add put print
add or add put print
put print
add or add put print
or xor add put print
sub and add put print
add or add put print
mod mul sub put print
idiv xor add put print
mul or xor put print
or xor add put print
or and add put print
idiv xor add put print
xor add sub put print
mod mul sub put print
quit

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

এটি পূর্ণসংখ্যার 32 অনুলিপি ব্যবহার করে 89 25 20 6। লক্ষ্যযুক্ত স্ট্রিংয়ের সমস্ত চারকোডগুলি স্ট্যাক ক্রমে এই পূর্ণসংখ্যার ক্রিয়াকলাপের সাথে পাওয়া যায়: উদাহরণস্বরূপ, 'এ' (এএসসিআইআই 65) 89 - (25 এবং (20 + 6))। অনেকগুলি 4-টিপল পূর্ণসংখ্যার এই সম্পত্তি থাকে; এটিকে বেছে নেওয়া হয়েছিল কারণ তারা উত্পন্ন করা বিশেষত সহজ।

currentflat string dup rrand

ফ্ল্যাট 1 এ ডিফল্ট হয়, সুতরাং এটি 1 দৈর্ঘ্যের স্ট্রিং তৈরি করে (আরম্ভ করা \0) ized dupএটি কোনও গভীর অনুলিপি নয়: এটি একই স্ট্রিংয়ের জন্য দ্বিতীয় রেফারেন্স তৈরি করে। rrand এলোমেলো বীজ ঠেকায়, এটি ডিফল্ট ০ ["\0", "\0", 0].

count dup count count mul mul xor

count স্ট্যাকের আইটেমের সংখ্যা ধাক্কা দেয়, সুতরাং এটি 3 ^ (3 * (5 * 6)) = 89 এর গণনা করে।

count count mul count dup mul exch count

4 * 5 = 20, 5 * 5 = 25, 6 = 6. স্ট্যাকটি এখন ["\0", "\0", 0, 89, 25, 20, 6]

count copy count copy count copy count copy count copy

পুরো স্ট্যাকটি পাঁচবার নকল করুন। সুতরাং আমরা আমাদের প্রাথমিক 7-উপাদান স্ট্যাকের 32 অনুলিপি সহ শেষ করি। আমাদের কেবলমাত্র 31 টি অনুলিপি প্রয়োজন, যেহেতু লক্ষ্যযুক্ত স্ট্রিংটি 31 অক্ষর দীর্ঘ, তবে অতিরিক্ত অনুলিপিটি ক্ষতিগ্রস্থ হয় না।

add and sub put print

শীর্ষ চারটি পূর্ণসংখ্যা থেকে একটি চারকোড গণনা করুন, স্ট্রিংয়ের সূচক 0 তে এটি লিখুন, তারপরে স্ট্রিংটি মুদ্রণ করুন।

quit

ডিফল্ট প্রম্পট দমন করে।


11

রুবি , 420 354 338 বাইট

def P a
print String a
end
def Q a
p String a
end
class String
def inspect
putc sum size
q
end
end
def w
Q def hacked
end
rescue
end
P def And
end
w
P def she
end
w
P def said
end
Q def gadget
end rescue
w
def a
Q def afraid
end
rescue
end
a
P def But
end
w
P def that
end
a
putc String def s
end
w
P def his
end
Q def fierce
end rescue
a

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

ঝাঁকুনির আরোহী ক্রমে:

বড় হাতের অক্ষর দিয়ে শুরু হওয়া শব্দগুলি সেই নামের সাথে কোনও শ্রেণি নির্ধারণ করে এবং displayশ্রেণি সংজ্ঞা সংস্থার মধ্যে কল করে মুদ্রণ করা যায়।

অন্য নামগুলি সেই নামের সাথে পদ্ধতিগুলি সংজ্ঞায়িত করে প্রদর্শিত হতে পারে, যা প্রতীক ফেরত দেয়, তারপরে নেতৃস্থানীয় কোলন অপসারণের জন্য স্ট্রিংয়ে কাস্ট করে।

অন্যান্য অক্ষরগুলি putcতাদের ASCII কোডে কল করে প্রদর্শিত হতে পারে । String defস্ট্রিংটি পেতে ট্রিকটি পুনরায় ব্যবহার করে আমরা তার উপযুক্ত সংখ্যাগুলি তৈরি করতে পারি , তারপরে তার আকার দ্বারা নির্ধারিত একটি মডিউল ব্যবহার করে এর বাইটগুলির যোগফল গ্রহণ করি । দুর্ভাগ্যক্রমে, আমাদের কাছে সেই বস্তুর শ্রেণিবদ্ধকরণের বাইরে অন্য কোনও জিনিসে কল করার উপায় নেই, যা যুক্তিগুলিতে পাস করা কঠিন করে তোলে। সুতরাং চূড়ান্ত হ্যাকটি পুনরায় সংজ্ঞায়িত করা হয় String#inspect, যা pপদ্ধতিতে স্ট্রিং পাস করার সময় অন্তর্নিহিত বলা হয় , যাতে এটি ত্রুটি উত্থাপনের আগে কোনও পার্শ্ব প্রতিক্রিয়া হিসাবে উপযুক্ত চরিত্রটি গণনা করে এবং আউটপুট করে দেয় যাতে pপ্রকৃতরূপে নির্বাহ শেষ করা যায় না এবং প্রিন্ট করা যায় না নতুন লাইন. তারপরে আমাদের মূল কোডটিতে ত্রুটিটি উদ্ধার করতে হবে।

সম্পাদনা: জর্দান কিছু বুদ্ধিমান নিয়ন্ত্রণ প্রবাহ গল্ফিং সহ বাইট গণনাটিকে অনেক কম, অহেম, উচ্চ করেছে এবং আমি raiseএক-বর্ণের অস্তিত্বহীন পদ্ধতি কল দিয়ে প্রতিস্থাপন করে আরও কয়েকটি বাইট কেটেছি, যা নামেরিয়ার উত্থাপন করে।

সম্পাদনা 2: লক্ষ্য করা যায় যে print Stringকোনও পদ্ধতিতে এক্সট্রাক্ট করার সাথে ক্লাস সংজ্ঞা ট্রিকটি ব্যবহার করার চেয়ে কোনও পদ্ধতি সংজ্ঞা দিয়ে কেবল এটি ব্যবহার করা সস্তা, যেহেতু পদ্ধতিগুলি শিরোনাম কেস করার অনুমতি দেয়।


সুন্দরী .... আমি বুঝতে পারছি না sum sizeযে পরিমাণটি তার আকারটি কত আকারের হয়, তবে সমস্ত কিছু চেক আউট করে!
মান কালি

আমি এটি একটি সামান্য অলসভাবে রেখেছি, এটি আসলে যোগফল পদ্ধতির argumentচ্ছিক যুক্তি হিসাবে স্ট্রিংয়ের আকারে পাস করছে passing
হিস্টোক্র্যাট

11

> <> , 233 122 বাইট

cdacaabbglccgpcbfbbcaacdebbafbebbcebdbealbcpcdbcccdlcdpacbbalccpaalacpbcfafbaab









       g  sandBe
       o  Aviuth

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

এটি এমবিম্বের উত্তরের গল্ফ হিসাবে শুরু হয়েছিল , তবে আমি একটি মৌলিক শিফট আবিষ্কার করেছি যা বিপুল সংখ্যক বাইট সংরক্ষণ করে, তাই আমি এটি আমার নিজের উত্তর হিসাবে পোস্ট করছি।

আউটপুটে অ-বর্ণানুক্রমিক অক্ষর তৈরি করা বারবার স্ট্যাকের মানগুলিকে চাপ দিয়ে, তারপরে lস্ট্যাকের দৈর্ঘ্যটি ধাক্কা দিয়ে ব্যবহৃত হয়। তবে এটিকে অবিলম্বে আউটপুট দেওয়ার দরকার নেই: ব্যবহার করে pএই চরিত্রটি এমন কোনও ঘরে স্থাপন করা যেতে পারে যার স্থানাঙ্কগুলি 10 থেকে 15 এর মধ্যে উভয়ই অন্তর্ভুক্ত থাকে, পরে এটির সাথে পুনরুদ্ধার করা যায় g। একইভাবে, বর্ণমালার অক্ষরগুলিকে প্রাথমিক উত্স কোডে স্থাপন করা যেতে পারে এবং এটি পড়তে পারেন: যেহেতু ইনপুটটিতে সর্বোচ্চ অ-বর্ণানুক্রমিক অক্ষর কোড 46 ( .) হয়, এর অর্থ স্ট্যাকটি সংরক্ষণের জন্য প্রয়োজনীয় 62-এর চেয়ে বেশি ঠেলাঠেলি করার দরকার নেই আউটপুট সমস্ত 31 অক্ষর।

অতিরিক্তভাবে, vকলাম column-এ কোডে একটি স্থাপন করা হয় যখন নির্দেশ পয়েন্টারটি চারপাশে আবৃত হয় এবং এটি হিট হয় v, goতখন ধাক্কা স্থানাঙ্ক থেকে পড়ার জন্য ক্রমটি বারবার কার্যকর করা হয় এবং সংশ্লিষ্ট অক্ষরগুলি আউটপুট দেয়। শেষ পর্যন্ত, স্ট্যাকটি খালি হয়ে যায় এবং gএকটি ত্রুটি সহ প্রোগ্রামটি সমাপ্ত করে।

কোডের প্রথম 7 বাইটগুলি প্রথম 7 এবং শেষ 7 স্থানাঙ্ক উভয়ই ধাক্কা হিসাবে পুনরায় ব্যবহার করা হয়। v9 কলামে স্থাপন করা তাত্ত্বিকভাবে আরও দুটি বাইট সংরক্ষণ করতে পারত, তবে অক্ষরগুলিকে Ainsvকোডের 2x2 স্কোয়ারে বাধ্য করেছিল , যা অসম্ভব। পূর্ববর্তী সংস্করণ 15 কলাম ব্যবহার করেছে, তবে এর জন্য সোর্স কোডে একটি অতিরিক্ত লাইন প্রয়োজন এবং ছয় বাইট দীর্ঘ শেষ হয়েছিল।


আরও চিন্তাভাবনা করার পরে, আমি মনে করি rযে যেখানেই চাই না কেন প্রান্তিককরণটি সরাতে বাইট ব্যয় করে আমি কলাম 9 কাজ করতে পারি। তবে এই প্রোগ্রামটি গল্ফ করা আমার মস্তিষ্ককে কিছুটা ব্যথা করে।
নাইট্রডন

8

সিজেম , 262 বাইট

  KAbScibCmhc  CZbsic          GmQYbsic
S CmfYmeibc    ImqmeKmhcel     AZbAbc
S CmfYmeibc    KAbScibCmhcel   ImqmeKmhAmhcel  GmQYbsic    KAZbYbbBbc
S CGmQbDbc     EYbTYtZbc       FYbGmQbcel      EYbGmQbcel
S EYbGmQbcel   ImqmeKmhcel     KAbScibCmhcel   EYbGmQbcel  CGmQbDbc    CmfYmeibc
S ImqmeKmhcel  ImqmeKmhAmhcel  CmfYmeibc       PYmhmeKmhc  CGmQbDbc

এটি অনলাইন চেষ্টা করুন! নিউলাইনগুলি এখানে কেবল স্পষ্টতার জন্য দেখানো হয়েছে; প্রতিটি লাইন একটি চরিত্র প্রতিনিধিত্ব করে।

হ্যাঁ, এই মজা ছিল। বর্ণানুক্রমিক কমান্ডে নিজেদেরকে সীমাবদ্ধ করা কিছু আকর্ষণীয় চ্যালেঞ্জ তৈরি করে:

  • ছাড়া {এবং }, নিয়ন্ত্রণ প্রবাহের কার্যত কোনও সুযোগ নেই (বাদে f, যা আমি ব্যবহারের সুযোগ পাইনি)।
  • ছাড়া \, _, ;, অথবা $, আমরা স্ট্যাকের ম্যানিপুলেশন জন্য কোন উপায় আছে।

এর অর্থ হ'ল মূল লক্ষ্যটি স্ট্যাকের প্রাসঙ্গিক কোড পয়েন্টগুলি পাবে এবং তারপরে এগুলি অক্ষরে রূপান্তরিত করবে c

সমস্যাটি হ'ল আমাদের বেশিরভাগ বুনিয়াদি পাটিগণিত কমান্ডের পাশাপাশি পূর্ণসংখ্যার আক্ষরিকও অভাব রয়েছে। যদিও এটি ঠিক আছে, কারণ mনেমস্পেসে অসংখ্য উন্নত গাণিতিক ক্রিয়াকলাপ রয়েছে এবং দরকারী সংখ্যায় পূর্বনির্ধারিত অনেকগুলি ভেরিয়েবল রয়েছে।

আমি স্কোয়ার শিকড়গুলির ( mQএবং mq), ঘনিষ্ঠ ক্রিয়াকলাপ me, এবং বেস রূপান্তর ( b) এর ভারী ব্যবহার করে শেষ করেছি , যা গুণন ( [X 0] Ybএক্স * ওয়াই গণনা) অনুকরণ করতেও ব্যবহার করা যেতে পারে । তদাতিরিক্ত, কখনও কখনও বড় হাতের কোডপয়েন্টটি নির্মাণ করা সহজ হয়, সেক্ষেত্রে আমরা elফলাফলের চরিত্রটিতে (ছোট হাতের রূপান্তর) ব্যবহার করতে পারি ।

আমি এখনও দীর্ঘ কিছুগুলির সাথে সন্তুষ্ট নই। আচ্ছা ভালো.

ব্যাখ্যা

এটি আউটপুটটির একটি চরিত্র অনুসারে বর্ণনামূলক ব্যাখ্যা। আমি শুরু করার আগে এখানে সংখ্যা তৈরির কয়েকটি ছোট উপায় রয়েছে:

  • 0, 1, 2, 3 ভেরিয়েবল অন্তর্ভুক্ত করা হয় T, X, Y, Zযথাক্রমে।
  • 20 মাধ্যমে নাম্বার 10 ভেরিয়েবল অন্তর্ভুক্ত করা হয় Aমাধ্যমে K
  • 32 ব্যবহার করে তৈরি করা যেতে পারে Sci( Sএকটি স্থান যুক্ত একটি স্ট্রিং ঠেলে দেয়, cএই স্ট্রিংটির প্রথম অক্ষর পায় এবং iসেই অক্ষরটিকে তার কোড পয়েন্টে রূপান্তর করে)। Sস্পেস জন্য ব্যবহৃত হয়।
  • 4 দ্বারা প্রদত্ত হয় GmQ(16 এর পূর্ণসংখ্যা বর্গমূল)।
  • 5 দ্বারা দেওয়া হয় AZbYb(10 কে বেস 3 তে [1 0 1]রূপান্তর করুন , ফলনকারী , এবং সংখ্যার ফলাফলের অ্যারেটিকে বেস 2 তে রূপান্তর করুন, ফলনকারী 5)।
  • 7 দ্বারা দেওয়া হয় Ymei(গণনা এক্সপুট (2) এবং পূর্ণসংখ্যায় রূপান্তর)।

A

K           - push 20                        | 20
 Ab         - convert to base 10             | [2 0]
   Scib     - convert from base 32           | 64
       Cmh  - hypot(TOS, 12)                 | 65.115
          c - round down and convert to char | 'A

n

C      - push 12            | 12
 Zb    - convert to base 3  | [1 1 0]
   s   - convert to string  | "110"
    i  - convert to integer | 110
     c - convert to char    | 'n

d

GmQ      - push 4             | 4
   Yb    - convert to base 2  | [1 0 0]
     s   - convert to string  | "100"
      i  - convert to integer | 100
       c - convert to char    | 'd

s

C         - push 12         | 12
 mf       - factors         | [2 2 3]
   Ymeib  - base 7          | 115
        c - convert to char | 's

h

I           - push 18                        | 18
 mq         - sqrt                           | 4.242
   me       - exp                            | 69.591
     Kmh    - hypot(TOS, 20)                 | 72.408
        c   - round down and convert to char | 'H
         el - lowercase                      | 'h

e

A      - push 10              | 10
 Zb    - convert to base 3    | [1 0 1]
   Ab  - convert from base 10 | 101
     c - convert to char      | 'c

a

KAbScibCmhc   - push 'A (see above) | 'A
           el - lowercase           | 'a

i

I              - push 18         | 18
 mq            - square root     | 4.242
   me          - exp             | 69.591
     Kmh       - hypot(TOS, 20)  | 72.408
        Amh    - hypot(TOS, 10)  | 73.095
           c   - convert to char | 'I
            el - lowercase       | 'i

,

K          - push 20              | 20
 AZbYbb    - convert to base 5    | [4 0]
       Bb  - convert from base 11 | 44
         c - convert to char      | ',

'

C        - push 12              | 12
 GmQb    - convert to base 4    | [3 0]
     Db  - convert from base 13 | 39
       c - convert to char      | ''

B

E         - push 14               | 14
 Yb       - convert to base 2     | [1 1 1 0]
   TYt    - replace elem 0 with 2 | [2 1 1 0]
      Zb  - convert from base 3   | 66
        c - convert to char       | 'B

u

F          - push 15             | 15
 Yb        - convert to base 2   | [1 1 1 1]
   GmQb    - convert from base 4 | 85
       c   - convert to char     | 'U
        el - lowercase           | 'u

t

E          - push 14             | 14
 Yb        - convert to base 2   | [1 1 1 0]
   GmQb    - convert from base 4 | 85
       c   - convert to char     | 'T
        el - lowercase           | 't

.

P          - push pi                        | 3.141
 Ymh       - hypot(TOS, 2)                  | 3.724
    me     - exp                            | 41.437
      Kmh  - hypot(TOS, 20)                 | 46.011
         c - round down and convert to char | '.

1
আপনি বেসের জন্য সাধারণ পরিসরের বাইরে অঙ্ক সহ বেস রূপান্তর করতে পারেন, যেমন HYbYCtYbc, HYbXAtYbcএবং HYbXBtYbc
নাইট্রডন

7

ডেডফিশ 94 , 943 বাইট

iiisdsiciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiicddddddddddcddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdddddddddddddddddddddsddddddcdddddddddddcdddcdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdddddddddddddddddddddsddddddcddddddddddddddddddciiiiiiiicdddddcddddddddddddddddddddddddddddddddddddddddddddddddddddddddcddddddddddddciiiiiiiciiiiiiiiiiiiiiiiiiiiiiiiiiiciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiicdcddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdddddddddddddddddddddsdddddcddddddddddddcdddddddciiiiiiiiiiiiiiiiiiicdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcddddddddddddddddddddddddddddsddddddcdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcddddddddddddddddddddddsiiiiciciiiiiiiiiicdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddcdddddddc

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

কোনও লুপ অনুমোদিত নয় :(




6

এমএটিএল , 187 158 বাইট

IEWQKEtqhpEqqKQHhthpKWEyQKWEqqYqQQXJwtQQQwKWEJKQthpYqKQHhthptQQQQQwIIhKQhpqKWEIWKQhpqIEWQQJQQtqKWEyIIhIhpYqQXJyKQthpYqwIWKQhpqyqKWEyJtQwhhPIIhKQhpQIWKQhpqvlec

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

আরও পঠনযোগ্য সংস্করণ: এটি অনলাইনে চেষ্টা করুন! স্ট্রিং তৈরির জন্য ম্যানুয়াল প্রচেষ্টা। স্ট্রিং কে সুবিধাজনক খণ্ডে কাটা, ব্যবহার Pএবং hস্ট্রিং এবং স্ট্রিং তৈরির মাধ্যমে গল্ফ করার জন্য সম্ভবত প্রচুর জায়গা রয়েছে । আমি আশা করি কেউ আমাকে ছাড়িয়ে যাওয়ার চ্যালেঞ্জ গ্রহণ করবে। মূল চ্যালেঞ্জটি হ'ল আপনি ব্যবহার করতে পারবেন না +বা -, সুতরাং বুনিয়াদি গণিত প্রায়শই সম্ভব হয় না।

হাইলাইটস:

  • KQthpYq: 25 তম ( KQthp) প্রাইমটি Yq97 টি, চিঠির সাথে সম্পর্কিত a। চিঠিটি s(115) একইভাবে উত্পন্ন হয়েছে 113 থেকে, 30 তম প্রধান সংখ্যা। তখনই ব্যাপকভাবে ক্লিপবোর্ড পুনরায় ব্যবহার করা হয় J
  • hishক্লিপবোর্ডে আগে থেকে স্টোর করে সংক্ষিপ্ত করা হয় J। যেহেতু যে পূর্বে সঞ্চিত s, আমরা গড়ে তুলতে hisবিপরীত তাই আমরা এখনও সাম্প্রতিক উদ্ধার করতে পারেন sব্যবহার y, এবং ব্যবহার পরে এটি টুসকি P
  • লুইস মেন্ডোকে প্রচুর সংখ্যক বাইট সংরক্ষণ করা হয়েছে (বেশিরভাগ ক্ষেত্রে একগুচ্ছ পরিবর্তন hকরে vle)

হু - আমি সত্যিই ভেবেছিলাম আমার ব্যবহারের সাথে খারাপ vলাগবে hearlier অনুমান করি কেবল অনুমান করার পরিবর্তে আমার এটি করা উচিত ছিল। এছাড়াও, মাথা উঁচু করার জন্য ধন্যবাদ, অতিমাত্রায় মুছে ফেলার ঘটনা ঘটেছে। আপনি এর থেকে আরও ভাল করতে পারবেন কিনা তা জানতে আগ্রহী আমি ...
সানচাইজস

আমি চেষ্টা করতে চাই, তবে এটি অপেক্ষা করতে হবে। এর উত্তরে মনে হচ্ছে অনেক সময় লাগবে!
লুইস মেন্ডো

1
@ লুইস মেন্ডো ইয়ুপ এটি তৈরি করতে আমাকে এক ঘন্টা বা আরও বেশি সময় নিয়েছে এবং এতে কেবল খুব স্থানীয় অপ্টিমাইজেশন অন্তর্ভুক্ত রয়েছে। আমি নিশ্চিত যে জিনিসগুলিতে কিছুটা বিশ্বব্যাপী চেহারা দিয়ে কেউ আরও ভাল করতে পারে।
সান্চাইজস

আমার প্রয়াস । আমি আপনার দিকে তাকাতে পারি নি, সুতরাং
উপায়গুলি আশাবাদী

@ লুইস মেন্ডো আমি এর Uঅর্থ সম্পূর্ণরূপে ভুলে গিয়েছি ^2, এটি আমাকে বেশ কয়েকটা বাইট বাঁচাতে পারত ...
সানচাইসেস

6

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

KEUQtVQsQKBFZAXHKUqyyhsXJyyhdQtQQQwOJIUEyhdtKEhsHKQYqEEKQyywhdXJKEUQQHKUhstQwOytHKhsKYqyhdbJyqOHKhstQHKUqhsKUqYqqJvlec

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

আরও পঠনযোগ্য সংস্করণ (প্রতিটি লাইন একটি অক্ষরের সাথে সম্পর্কিত, স্ট্যাক-পুনঃব্যবস্থা অপারেশনগুলি বাদে)।

ব্যাখ্যা

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

ব্যবহৃত কিছু কৌশল:

  • 32 এর নীচে বেশিরভাগ কোড পয়েন্ট স্থান হিসাবে প্রদর্শিত হয়। তাই 0বেশিরভাগ স্পেসের জন্য ব্যবহৃত হয়, কারণ এটির জন্য কেবল একটি বাইট ( O) ব্যয় হয় ।
  • প্রথম স্থানের জন্য অবশ্য 15ব্যবহার করা হয় (যেমন উত্পন্ন KUq,) কারণ এটি তারপর এটি যোগ করে পুনঃব্যবহার করা যাবে 100(গৃহস্থালির কাজ d) দিতে 115( s)। আর বার 5স্থান (যেমন উত্পন্ন জন্য ব্যবহার করা হয় KQ), যাতে ভবিষ্যতে এগুলি থেকে বিয়োগ করা যেতে পারে 44( ,দিতে) 39( ')।
  • ক্লিপবোর্ড Jঅক্ষরগুলি সংরক্ষণ করার জন্য ব্যবহৃত হয় যা পুনরাবৃত্তি হবে: প্রথমে s, তারপরে '। একইভাবে, ক্লিপবোর্ডে Hদোকানে 100, যার জন্য উপকারী dএবং অন্যান্য অক্ষরের জেনারেট করার জন্য।
  • ক্লিপবোর্ডে ( ) এবং ( ) পূর্বনির্ধারিত লিটারেলগুলির সাথে একত্রে ফাংশন Q(অ্যাড 1), q(বিয়োগ 1), E(দ্বারা গুণ 2) এবং U(বর্গক্ষেত্র) বিস্তৃত ব্যবহার করা হয় ।I3K4
  • স্বেচ্ছাসেবী সংযোজন এবং বিয়োগগুলি একটি ভেক্টর ( h) এর সাথে সংমিশ্রণ করে এবং এর যোগফল ( s) বা একটানা পার্থক্য ( d) গণনা করে করা হয় ।
  • 100( d) 4বাইনারি হিসাবে দশমিক সংখ্যা হিসাবে ব্যাখ্যা হিসাবে উত্পন্ন হয় ।
  • 110( n) থেকে প্রাপ্ত হয় 65( A(STRING রূপান্তর দ্বারা) '65': কোড পয়েন্ট [54 53]), যোগ 1কোড পয়েন্ট (থেকে [55 54]) তাদের একসঙ্গে summing এবং যোগ 1
  • যে ক্রমে সংখ্যাগুলি উত্পন্ন হয় সেটিকে কখনও কখনও সুবিধার জন্য পরিবর্তন করা হয়; এবং তারপরে এগুলি স্ট্যাক-পুনঃব্যবস্থা ফাংশনগুলির মাধ্যমে পুনরায় সাজানো হয়: অদলবদল ( w), বুদবুদ b)।

1
খুব সুন্দর! স্পেসগুলির Oপরিবর্তে চালাক স্পর্শ KWE। এবং আপনি আমার সন্দেহের বিষয়টি নিশ্চিত করেছেন যে অন্য একটি ক্লিপবোর্ড ত্যাগ করা সম্ভবত আরও ভাল H
Sanchises

5

ডিসি , 240 222 209 বাইট

OOOOOziOOOOOOOOOOOOOOOOOOOOOOOOOOOzddddddzkdddzasBdzasAdzscdzdasCzsdOOlAxlAxPOBlBxdIlAxoPAdlBxddsrIlAxssPPOPlsIZlCxddspPOZlCxPPOPlrdZlCxPlsPlrPlcPPKPdZlBxdZlAxPOAZlAxdPIZlCxdPrPdPlpPlrdZlCxPPKPOPPlpPlsPOPldPKP

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

আমার প্রথম চিন্তাটি @ সশৌমারা হিসাবে একই ছিল, কেবলমাত্র অক্ষরের সমস্ত ASCII মান উত্পন্ন করতে পর্যাপ্ত স্ট্যাক স্ট্যাকের উপরে চাপুন। তারপরে এটি আমার কাছে ঘটেছিল যেহেতু +, -এবং *একক-চরিত্রের অপারেটর, আমি কেবল তাদের পুনরায় তৈরি করতে পারি এবং পাটিগণিত ব্যবহারের ক্ষমতা রাখি! অবশ্যই এটি আরও ছোট হবে! এবং, আমি যদি আর কোনও বাইটগুলি গল্ফ করতে সক্ষম হই, তবে আমি অবাক হব না, তবে আপাতত ... এই সংকীর্ণ পদ্ধতিটি ভুতুড়ে (ইশ) কে বাঁধতে সক্ষম হয়েছে।

OOOOOziOOOOOOOOOOOOOOOOOOOOOOOOOOOzddddddzkdddzasBdzasAdzscdzdasCzsdএই পদ্ধতির অংশটি যা @ শৈশোমারা'র মতো, তবে আমরা কেবল ৪ to-এর উপরে চলে যাই, এটি .। আমরা এটি করি কারণ আমাদের 45-এর উপরে যেতে হবে -, এবং আমাদের স্ট্রিংয়েও একটি পিরিয়ড প্রয়োজন, সুতরাং সময়ের জন্য আরও কিছুটা এগিয়ে যাওয়া (আমার মনে হয়) সবচেয়ে সস্তা। পথে, আমরা কিছু মান সংরক্ষণ করি: 5, 32, 39 সমস্ত পরে কাজে আসে। ইউটিলিটিভ জিনিসের জন্য 5, 32 এবং 39 এর ASCII মানগুলির জন্য। মূলত আমি 1-5 করেছি, তবে এটি ব্যয়বহুল ছিল এবং আমি সহজভাবে 4 ব্যবহার এড়াতে সক্ষম হয়েছি; ব্যবহার Z(একটি মান পপ, এটা হয়েছে ডিজিটের সংখ্যা পুশ) তিন, দুই, বা এক অঙ্ক ঐ মানের জন্য সংখ্যার উপর। 42, 43, ও 45 এ, আমরা স্ট্রিং এইসব রূপান্তর করুন ( *, +, এবং -যথাক্রমে) এবং (ম্যাক্রো তাদের সংরক্ষণ B, AএবংCযথাক্রমে)। এর অর্থ হ'ল অক্ষরগুলি ব্যবহার না করে *+-আমরা এখন সেই অপারেটরগুলি ব্যবহার করতে পারি।

এখান থেকে আমরা মূলত নিখুঁত জমার পরিবর্তে গণিতের শক্তি ব্যবহার করে ASCII মানগুলি তৈরি করা শুরু করি, সেই সাথে পুনরাবৃত্তির কয়েকটি সঞ্চয় করে। 100, 105 এবং 115 এগুলি যথেষ্ট পরিমাণে আসে যা এগুলি সংরক্ষণ করা (রেজিস্টারে বা অন্যথায়) বোধগম্য। মূলত, আমি 10s দিয়ে ভরা স্ট্যাকটি রেখেছি এবং এগুলি 100 এর তৈরিতে ব্যবহার করেছি; এটি 32 টি দিয়ে স্ট্যাকটি পূরণ করার জন্য বাইটস সঞ্চয় করে শেষ করে এবং সেগুলি পরে স্পেস হিসাবে ব্যবহার করে। হওয়া ASCII অধ্যায় সামান্য আরো ভালো পঠনযোগ্য সংস্করণ: OOlAxlAxP OBlBxdIlAxoP AdlBxddsrIlAxssP P OP lsIZlCxddspP OZlCxP P OP lrdZlCxP lsP lrP lcP P KP dZlBxdZlAxP OAZlAxdP IZlCxdP rPdP lpP lrdZlCxP P KP OP P lpP lsP OP ldP KP

18 বাইট দ্বারা শেভ করা: একটি রেজিস্টারের পরিবর্তে 5 নম্বর ইনপুট রেডিক্স হিসাবে সংরক্ষণ করা; নিবন্ধের পরিবর্তে 32 নম্বর নির্ভুলতা হিসাবে; নিবন্ধের পরিবর্তে 115 নম্বর আউটপুট রেডিক্স হিসাবে; তারপরে 1s উত্পন্ন করতে এবং 2s উত্পন্ন করতে পরিবর্তন KZকরতে IZহয়েছিল ।OZKZ

32 টি দিয়ে স্ট্যাক প্লাবিত করে আরও 13 বাইট বন্ধ করে দেওয়া; যথাযথতা 39; 116 স্টোরেজ এড়ানোর জন্য স্ট্যাক ম্যানিপুলেশন ব্যবহার করে; আমি দুর্ঘটনাক্রমে কিছু ডাবল ওয়ার্ক কাটছি।


+1 aএই অপারেটরদের পুনরায় তৈরি করতে, তারপরে তাদের সাথে কল করার জন্য ব্যবহার করার জন্য দুর্দান্ত ধারণা x। এটি ডিসির ডেটা-ইজ-কোড আচরণ দেখায়। যখন আমার সময় হবে আমি রেজিস্টারগুলির পরিবর্তে প্যারামিটারগুলিতে ডেটা সংরক্ষণের আপনার সর্বশেষ কৌশলটি প্রয়োগ করব। আপনি কী ভাবেন যে আমরা কেবলমাত্র হেক্স ব্যবহার করে প্রয়োজনীয় বিপুল সংখ্যাকে ইনপুট দেওয়ার জন্য ভাগ্যবান হলে আমরা একবারে আরও বেশি অক্ষর মুদ্রণের জন্য পি যেভাবে কাজ করে তার অপব্যবহার করে একটি আরও ছোট ডিসি সমাধান পেতে পারি?
সেশৌমারা

@ সেশোমারা এটি সম্ভব, যদিও আমার চ্যালেঞ্জগুলি নিয়ে এটি করার চেষ্টা করার থেকে বোঝা যায় যে এই মানগুলি দ্রুত বড় হওয়ার কারণে এটি সম্ভবত অসম্ভব। কেবল প্রথম দুটি অক্ষর, 'আন' পেতে, আমাদের P16750 বা 0x416E হওয়া দরকার। যদি আমরা কেবল ভাগ্যবান হওয়ার জন্য ঘটেছিলাম এবং সাবস্ট্রিংগুলির একটির মধ্যে কেবলমাত্র AF এর মানগুলি অন্তর্ভুক্ত ছিল, তবে এটি আমাদের শর্টকাট পেতে পারে। যদিও কিছু ভাগ্য হবে! অন্যথায় আমরা হয় কোনওভাবে বড় সংখ্যাকে ইনপুট দেব, তাদের সাথে কোনওভাবে আসব, বা 256 দ্বারা বহুগুণ যোগ করব এবং গুণ করব Which যা মনে হচ্ছে ... এর একগুচ্ছের চেয়ে খাঁটি P
brhfl

5

জাপট , 87 বাইট

Bs g caA
HzG
Ts caV
iWisiiihiSisiUitiaihitiSitiuibu iUiSiWcaV idiiiaisiSieihisiSidiniau

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

ব্যাখ্যা

প্রথম লাইনটি জেনারেট করে 'এবং এটিকে ভেরিয়েবলের জন্য বরাদ্দ করে U

Bs g caA
B                            :11
 s                           :To string
   g                         :First character
     c                       :Character code
      a                      :  Absolute difference with
       A                     :  10

দ্বিতীয় লাইনটি 2ভেরিয়েবলকে বরাদ্দ করে V

HzG
H                            :32
 z                           :Floor divided by
  G                          :16

তৃতীয় লাইনটি উত্পন্ন .এবং পরিবর্তনশীল তা নির্ধারণ W

Ts caV
Ts                           :Convert 0 to a string
   caV                       :Absolute difference of its charcode with V (2)

তারপরে শেষ লাইনটি বিপরীত সময়ে স্ট্রিংয়ের একটি অক্ষর তৈরি করে।

iW...ibu ...iWcaV ...iau
iW                           :Start by prepending W (.) to U (')
  ...                        :Each i prepends the literal character that follows it to the string, with S being space and U being "'"
     ibu                     :As B is the constant for 11 and it can't be quoted, here i prepends "b" to the string and u uppercases it
         ...                 :As above, each i is prepending the character/constant that follows it to the string
            iWcaV            :Gets the absolute difference of the charcode of W (.) and V (2) to get the "," and prepends that
                  ...        :Some more literals
                     iau     :And, finally, the same trick is used for the "A" as was for the "B", as A is the constant for 10

সুন্দর সমাধান। আপনার সাথে প্রথম লাইন প্রতিস্থাপন দ্বারা একটি বাইট সংরক্ষণ করতে পারবেনQc dGaB
অজ্ঞতা প্রতিমূর্তি

4

লাল , 272 বাইট

prin quote And prin sp prin quote she prin sp prin quote said prin comma prin sp prin subtract to sp mold quote G sp prin quote But prin sp prin quote that prin subtract to sp mold quote G sp prin quote s prin sp prin quote his prin dot prin subtract to sp mold quote G sp

ডাবল উক্তি প্রয়োজনীয় হলে:

লাল , 344 বাইট

prin subtract to sp mold quote B sp prin quote And prin sp prin quote she prin sp prin quote said prin comma prin sp prin subtract to sp mold quote G sp prin quote But prin sp prin quote that prin subtract to sp mold quote G sp prin quote s prin sp prin quote his prin dot prin subtract to sp mold quote G sp prin subtract to sp mold quote B sp

টিআইওতে কাজ করে না তবে রেড ইন্টারপ্রেটারে কাজ করে।

লাল কনসোল

ব্যাখ্যা:

শব্দগুলি তুচ্ছ - আমি এগুলিকে আক্ষরিক হিসাবে মুদ্রণ করি (কোনও নিউলাইন ছাড়াই মুদ্রণ করি না) quoteলাল জায়গার জন্য অন্তর্নির্মিত শব্দ রয়েছে - spপাশাপাশি commaএবং dot"এবং 'আরো আকর্ষণীয়: আমি তাদের কাছ থেকে একটি স্থান বিয়োগ করে Prin Bএবং Gযথাক্রমে একটি আক্ষরিক থেকে শুরু Bএবং Gসঙ্গে স্ট্রিং প্রথমে তাদের রূপান্তর moldএবং তারপর অক্ষরে wtih (ক্রম তাদের উপর বিয়োগ ব্যবহার করার জন্য) to sp( রেড প্রোটোটাইপ দ্বারা রূপান্তর আছে - রূপান্তর এর ধরণের স্ট্রিং sp, যা চরিত্র)।


1
প্রশ্নটি পরিষ্কার করা হয়েছিল; তারা এটি থেকে আকর্ষণীয় অংশ অপসারণ করেছে।
এনাটোলিগ

@ অ্যানাটলিগ ধন্যবাদ, আমার এটির জন্য কঠোর প্রয়োজন ', তাই 272 বাইট সমাধান একই is
গ্যালেন ইভানভ

4

চতুর্থ (gforth), 351

CHAR A DUP EMIT
CHAR n EMIT
CHAR d EMIT
SPACE
CHAR s DUP EMIT
CHAR h EMIT
CHAR e EMIT
SPACE
EMIT
CHAR a EMIT
CHAR i EMIT
CHAR d EMIT
DUP CHAR m XOR EMIT
SPACE
CHAR f XOR DUP EMIT
CHAR B EMIT
CHAR u EMIT
CHAR t DUP EMIT
SPACE
DUP EMIT
CHAR h EMIT
CHAR a EMIT
EMIT
DUP EMIT
CHAR s EMIT
SPACE
CHAR h EMIT
CHAR i DUP EMIT
CHAR s EMIT
CHAR G XOR EMIT
EMIT

খুব খারাপ আমি একটি অক্ষরের শব্দের সাথে CHAR বা EMIT- র নতুন সংজ্ঞা দিতে পারি না, যেহেতু এর জন্য প্রয়োজন হয় :এবং ;(যেমন : C CHAR ;) বা '(যেমন ' CHAR ALIAS C)

আসলে, আমি শব্দের সংজ্ঞা দিতে পারলে, আমি করতে পারি : P CHAR EMIT ;এবং তারপরে P xমুদ্রণ করতে পারি x। আচ্ছা ভালো.

আমি এমনকি একটি বাফার তৈরি করতে পারি না, সেই চর ক্রমটি সেখানে লিখতে পারি এবং তারপরে এটিকে ইনপুট হিসাবে ব্যবহার করতে পারি, যেহেতু মেমরিতে লেখার জন্য প্রয়োজন !বাC!



3

পেপে , 266 বাইট

আমি আর স্ট্যাকটি খালি রাখি, এবং আর স্ট্যাকের 'গুলি' রাখি

reeEeeeeeE reeEEeEEEe reeEEeeEee reEe REeEEEeeEE Reee reeEEeEeee reeEEeeEeE reEe Reee reeEEeeeeE reeEEeEeeE reeEEeeEee reeeEeEEee reEe reeeEeeeEe reeEeeeeEe reeEEEeEeE reeEEEeEee reEe reeEEEeEee reeEEeEeee reeEEeeeeE reeEEEeEee reeeEeeEEE Reee reEe reeEEeEeee reeEEeEeeE Reee reeeEeEEEe reeeEeeeEe

এটি টিআইও-তে নেই, তবে আপনি এখানে চেষ্টা করে দেখতে পারেন


3

ডিসি , 240 বাইট

মূল ধারণাটি হ'ল 1 ( K) দ্বারা স্ট্যাকটি ক্রমাগত বৃদ্ধি করা , ( sX) স্ট্যাকের আকার ( ) সংরক্ষণের সাথে zকাস্টম নিবন্ধগুলিতে যখন এটি প্রতিটি অনন্য ASCII কোডের সাথে মেলে। মুদ্রণ ( P) পুরো জুড়ে সম্পন্ন হয়।

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKzsSKKzsQKKKKKzsqKKKKKzsCKKzsDKKKKKKKKKKKKKKKKKKKzPKzsBKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKzsaKKKzsdKzseKKKzshKzsiKKKKKzPldPlSPKKKKKzsszPlhPlePlSPlsPlaPliPldPlCPlSPlqPlBPKzdstzPdPlSPdPlhPlaPPlqPlsdPlSPlhPliPPlDPlqP

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

আমি কিছু অপ্টিমাইজেশন করেছি, যেমন কোনও চিঠি পরে ব্যবহার না করা থাকলে সেভ না করা d, যেমন একটি বাইট সংরক্ষণ করার জন্য স্ট্যাকের উপর একটি চিঠি যেমন: টি, নকল করা , যেহেতু স্মরণ করা ( lX2) বাইট হয়।


আমি একটি ডিসি সমাধান নিয়ে এসেছি যা +, -, এবং * এর জন্য ম্যাক্রো তৈরি করে পাটিগণিত ব্যবহার করে। এটি 262 বাইট। আমি প্রতিযোগিতামূলক হওয়ার চেষ্টা করার জন্য এটি অপ্টিমাইজ করার চেষ্টা চালিয়ে যাব, তবে আমি অবশ্যই বলতে পারি যে আমি হতাশ হয়েছি এটি (তুলনামূলক) নির্লভ সমাধানের চেয়ে অনেক বেশি মজাদার।
brhfl

@ ব্রফএফএল হ্যাঁ, ডিসি ভার্জোজ খুব দ্রুত পেয়ে যায়। তবুও, আমি আপনার সমাধানটি দেখতে চাই, তাই এটি পোস্ট করুন! এর মধ্যে, আমি হয় বর্তমান পদ্ধতির আরও গল্ফিং, কোনও প্রোগ্রাম ব্যবহার করা, বা ডিসির জন্য অন্য কোনও ধারণা নিয়ে আসার কথা ভাবছি।
সেশৌমারা

আমি 240 টাই করতে পেরেছি! আমি যদি আরও এক বা দুটি বাইট গল্ফ করতে সক্ষম হই তবে আমি অবাক হব না, তবে ... সামান্য / কোনও লাভের জন্য এটি অনেক বেশি অবচেতন দৃষ্টিভঙ্গি। যাইহোক, আমি এটি সেখানে কোথাও পোস্ট করেছি ...
brhfl

আমি আমার বেশিরভাগ সাধারণ রেজিস্ট্রিগুলিকে ডাব্লু / ইনপুট / আউটপুট রডিক্স এবং যথার্থতা প্রতিস্থাপন করে নীচে নেমেছি; দোকানে একটি বাইট এবং প্রতিটি লোডে একটি বাইট সংরক্ষণ করে ... সংখ্যাগুলি যেহেতু অবিরাম, তাই এটি কোনও কিছুই প্রভাবিত করে না ... আপনি সম্ভবত এটি আপনার সুবিধার্থে ব্যবহার করতে সক্ষম হতে পারেন!
brhfl

3

80186+ মেশিন কোড, এমএস-ডস .কোম ফর্ম্যাট, 822 787 বাইট

বর্ণগুলি ছাড়াও কেবল ট্যাব এবং স্পেস ব্যবহার করা হয়। অনুমোদিত রেঞ্জের বেশিরভাগ অপকডগুলি নির্দিষ্ট বর্ধন, হ্রাস, ধাক্কা, পপস এবং আইএমএল ছাড়াও রেজিস্ট্রার-অপ্রত্যক্ষ আন্ডারস এবং ওআরএস হয়, আমি এই সত্যটি ব্যবহার করি যে স্ট্যাকের রেজিস্টারটি শেষের দিকে ছিটকে গেলে চারপাশে মোড়ানো হয় around বিভাজনে কোডটি সংশোধন করতে বিভাগটির! 80186+ সমাবেশ প্রয়োজন কারণ আমি তাত্ক্ষণিক মানগুলিকে চাপ দিচ্ছি।

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXjhX   GXkOXYIQSX GXjdX    GXkOXwIIIIIIIIIQhhihs kOXeQh ihutSXH    GXHHHHHH GXSX GYkOXDAAAQSX GXjGX    GXkOXtQhidhsahe hshhd hAnSX GXjTX   GXkOXdIIIQkOXgAQSX GXHHHHHHHHHHHHHHHHHHHHH  GXSX GYkOXbAAAAAAAAAAAAAAQhhlh  Xhh qM

স্বরলিপি উত্স (TASM ফর্ম্যাট):

IDEAL
P186

MODEL   TINY
CODESEG
ORG 100H

MAIN:   
REPT 582
    POP AX  ; Set up stack to end of string
ENDM

    PUSH 68H
    POP AX
    OR [BX+58H],AX
    IMUL CX,[BX+58H],59H ; 68H*59H=2428H
    DEC CX ; -1=2427H
    PUSH CX

    PUSH BX
    POP AX
    AND [BX+58H],AL
    PUSH 64H
    POP AX
    OR [BX+58H],AX
    IMUL CX,[BX+58H],77H ; 64H*77H=2E7CH
REPT 9
    DEC CX ; -9=2E73H
ENDM
    PUSH CX

    PUSH 6968H
    PUSH 2073H

    IMUL CX,[BX+58H],65H ; 64H*65H=2774H
    PUSH CX

    PUSH 6920H
    PUSH 7475H

    PUSH BX
    POP AX
    DEC AX
    OR [BX+58H],AX ; FFFFH
REPT 6
    DEC AX
ENDM
    AND [BX+58H],AL ; FFF9H
    PUSH BX
    POP AX
    AND [BX+59H],AL ; 00F9H
    IMUL CX,[BX+58H],44H ; 0F9H*44H=4224H
REPT 3
    INC CX ; +3=4227H
ENDM
    PUSH CX

    PUSH BX
    POP AX
    AND [BX+58H],AL
    PUSH 47H
    POP AX
    OR [BX+58H],AX
    IMUL CX,[BX+58H],74H ; 47H*74H=202CH
    PUSH CX

    PUSH 6469H
    PUSH 6173H
    PUSH 2065H
    PUSH 6873H
    PUSH 2064H
    PUSH 6E41H

;; CODE STARTS:
;; PUSH 0909H
;; POP AX
;; PUSH 046CH
;; POP DX
;; INT 21H
;; INT 20H

    PUSH BX
    POP AX
    AND [BX+58H],AL
    PUSH 54H
    POP AX
    OR [BX+58H],AX
    IMUL CX,[BX+58H],64H ; 54H*64H=20D0H
REPT 3
    DEC CX ; -3=20CDH
ENDM
    PUSH CX

    IMUL CX,[BX+58H],67H ; 54H*67H=21CCH
    INC CX ; 21CDH
    PUSH CX

    PUSH BX
    POP AX
    AND [BX+58H],AL
REPT 21
    DEC AX
ENDM
    OR [BX+58H],AX ; 0FFEBH
    PUSH BX
    POP AX
    AND [BX+59H],AL ; 0EBH
    IMUL CX,[BX+58H],62H ; 0EBH*62H=59F6H
REPT 14
    INC CX ; +14=5A04H
ENDM
    PUSH CX

    PUSH 6C68H
    PUSH 5809H
    PUSH 0968H

    JNO $+4FH

END MAIN
ENDS

এটি সমাবেশ নয়, এটি মেশিন কোড ...
আর্টেলিয়াস

@ আর্টেলিয়াস ফেয়ার যথেষ্ট। আমি বর্ণনা আপডেট করেছি।
এরিকএফ

3

বেফুঞ্জ -98 (এফবিবিআই) , 125 124 121 বাইট

wab









And she said   But that s his












wakekekaayyeapwayyaayybyapayybyapcyabcyaayycayyba
a



b
wayapapoq

এটি অনলাইন চেষ্টা করুন! নামের একটি ফাইলের আউটপুট\n (একক নতুন লাইন)। জো কিং তার স্ক্রিপ্টের জন্য ধন্যবাদ ।

আউটপুটে 10 টি পিছনে থাকা নিউলাইনগুলি অন্তর্ভুক্ত।

কেবলমাত্র একটি পেছনের নতুন লাইনের জন্য, নিম্নলিখিত লাইনটি পরিবর্তন করে +1 বাইট :

wakekekaayyeapwayydayybyapayybyapycyabcyaayycayyba

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


ব্যাখ্যা:

নির্দেশিকা নির্দেশক নিম্নরূপে সরানো:আইপি পাথ

প্রোগ্রামটি কোনও ফাইলটিতে সেই লাইন আউটপুট দেওয়ার আগে অ-বর্ণমালা অক্ষরকে অবস্থানে রাখে।

বেফঞ্জ -98 এর মধ্যে নির্দেশাবলী অন্তর্ভুক্ত রয়েছে a... f, যা তাদের সংশ্লিষ্ট হেক্সাডেসিমাল মানটিকে স্ট্যাকের দিকে ঠেলে দেয়। অন্যান্য সংখ্যা উত্পন্ন করতে, এই মানগুলি y("সিসইনফো পান") এ আর্গুমেন্ট হিসাবে পাস করে :

10  y-position
11  x-position
12  y-velocity (= 0)
13  x-velocity (= 1)

23* stack size

কোডটির বেশিরভাগ y = 23 এ ayyরেখে স্ট্যাক আকারে বারবার অ্যাক্সেসের জন্য ব্যবহার করা যেতে পারে যা পরে অক্ষর কোডগুলি তৈরি করতে ব্যবহৃত হয়।


কেবলমাত্র একটিই ট্রেইলিং নিউলাইন অনুমোদিত নয়?
13:45

পোস্টটিতে "সাদা স্থান পুরোপুরি অনুমোদিত" বলে উল্লেখ করা হয়েছে states আমি মনে করি এটি অনুগ্রহ করে নতুন লাইনের ন্যায়সঙ্গত করতে এই শব্দটির অপব্যবহার করা ভাল!
এনাটলিগ

2

পাইথ , 210 বাইট

pChyCdpCyhyhlGpCyytlGpdpChFhTyylGpCyylGpChyytlGpdpChFhTyylGpCtytytlGpChyylGpCyytlGpCyyhTpdpCtyyTpCyhCdpCtFyyCdhTpCyhFlGCdpdpCyhFlGCdpCyylGpCtytytlGpCyhFlGCdpCtyyTpChFhTyylGpdpCyylGpChyylGpChFhTyylGpCyhyhTpCtyyT

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

আমি কয়েকটি সংখ্যা পেয়েছি যা কেবলমাত্র অক্ষর ব্যবহার করে প্রকাশ করা যেতে পারে (যেমন T= 10, Z= 0, lG= দৈর্ঘ্য (বর্ণমালা) = 26, Cd= চারকোড (স্থান) = 32), এবং কয়েকটি ফাংশন যা কেবলমাত্র অক্ষর ব্যবহার করে সম্পাদিত হতে পারে (যেমন t= হ্রাস, h= বৃদ্ধি, hF= বার বার বৃদ্ধি = অতিরিক্তকরণের প্রয়োগ) এবং তারপরে আমার প্রয়োজনীয় প্রতিটি অক্ষরের ফলস্বরূপ সেই ফাংশন এবং সংখ্যার সংক্ষিপ্ততম সংমিশ্রণ সন্ধান করতে একটি নিরপেক্ষ বাহিনী অনুসন্ধান চালিয়েছে।


2

16-বিট x86 বিধানসভা কোড, 665 বাইট

(বাইনারি হ'ল বর্ণানুক্রমিক, উত্স নয়)

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

বাইটকোড:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXsBFVKZPFFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXkLAFQQZJJJRkDCGPLXDPDJRkDBEPZJJRLZDRDZAAAQPLYDQDYXXDQhishZhDRDhZsDQDhaththRDhuthZBDQDRhidhsaRDhhehZsDRDhndhZADTZPiDEFY

উৎস:

    db    63 dup (58h) ;pop ax
    jnb   label1
    dw    5646h      ;magic #1
    dw    5a4bh      ;magic #2
    dw    4650h      ;magic #3
    dw    (42h-6)/2 dup ("PF")

label1:
    db    416 dup (58h) ;more pop ax
    imul  cx,[si+41h],46h ;cl=24h (string sentinel)
    push  cx         ;push string sentinel
    push  cx
    pop   dx         ;dl=24h
    dec   dx
    dec   dx
    dec   dx         ;dl=21h
    push  dx         ;save for later
    imul  ax,[si+43h],47h ;al=0CDh
    push  ax         ;push xxCDh
    dec   sp         ;insert xx
    pop   ax         ;ah=0CDh
    inc   sp         ;discard xx
    push  ax         ;push 0CDxx
    inc   sp         ;discard xx
    dec   dx         ;cl=20h (space)
    push  dx
    imul  ax,[si+42h],45h ;al=2Eh (dot)
    push  ax
    pop   dx         ;dl=2Eh
    dec   dx
    dec   dx         ;dl=2Ch (comma)
    push  dx         ;push xx2Ch
    dec   sp         ;insert xx
    pop   dx         ;dl=2Ch
    inc   sp         ;discard xx
    push  dx         ;push 2Cxxh
    inc   sp         ;discard xx
    pop   dx         ;dx=202Ch
    inc   cx
    inc   cx
    inc   cx         ;cl=27h (quote)
    push  cx         ;push xx27h
    push  ax         ;push xx2Eh
    dec   sp         ;insert xx
    pop   cx         ;ch=2Eh
    inc   sp         ;discard xx
    push  cx         ;push 2Exxh
    inc   sp         ;discard xx
    pop   cx         ;cx=272Eh
    pop   ax         ;discard xxxx
    pop   ax         ;ax=0CD21h
    inc   sp         ;discard xx
    push  cx         ;push ".'"
    push  7369h      ;push "is"
    push  685ah      ;push "h"+xx
    inc   sp         ;discard xx
    push  dx         ;" "+xx
    inc   sp         ;discard xx
    push  735ah      ;push "s"+xx
    inc   sp         ;discard xx
    push  cx         ;push "'"+xx
    inc   sp         ;discard xx
    push  7461h      ;push "at"
    push  6874h      ;push "th"
    push  dx         ;push " "+xx
    inc   sp         ;discard xx
    push  7475h      ;push "ut"
    push  425ah      ;push "B"+xx
    inc   sp         ;discard xx
    push  cx         ;push "'"+xx
    inc   sp         ;discard xx
    push  dx         ;push ", "+xx
    push  6469h      ;push "id"
    push  6173h      ;push "sa"
    push  dx         ;push " "+xx
    inc   sp         ;discard xx
    push  6568h      ;push "he"
    push  735ah      ;push "s"+xx
    inc   sp         ;discard xx
    push  dx         ;push " "+xx
    inc   sp         ;discard xx
    push  646eh      ;push "nd"
    push  415ah      ;push "A"+xx
    inc   sp         ;discard xx
    push  sp
    pop   dx         ;dx=sp
    push  ax
    imul  ax,[si+45h],5946h ;ah=09h

এটি এইভাবে কাজ করে:

  • কোডের শেষের দিকে স্ট্যাক পয়েন্টারটিকে পিওপি এক্স এর মাধ্যমে সরিয়ে দেয় (পিওপি এসপি করতে পারে না কারণ এটি বর্ণানুক্রমিক নয়);

  • ডস কল প্রেরণের জন্য নির্দেশটি তৈরি করে (অ্যালগোরিদিক কারণ এটি বর্ণানুক্রমিক নয়);

  • বর্ণহীন অক্ষরগুলি তৈরি করে;

  • স্ট্যাকের উপর স্ট্রিং রাখে;

  • কোডের ঠিক শেষে স্ট্যাকের উপর প্রেরণের নির্দেশ স্থাপন করে, যাতে কার্যকরভাবে সেই নির্দেশের দিকে প্রবাহিত হয়;

  • একটি স্ট্রিং প্রিন্ট করার জন্য নির্দেশিকা তৈরি করে;

  • স্ট্রিংটি প্রদর্শন করে এবং তাৎক্ষণিকভাবে ক্র্যাশ হয়। : - / / (একটি চমত্কার প্রস্থান আরও কোড প্রয়োজন হবে)




0

80186 মেশিন কোড + ডস, 91 বাইট

পাঠ্য সংস্করণ:

hm  j   j   PPjzjzjgaAAA    JSJJ    RU  Sq  ReAA    JdJJJ   RfiJElK JEiS GtI And she said   But that s his   

পাঠ্য সংস্করণ, ট্যাব সহ (কোড 9) প্রতিস্থাপন 9এবং স্পেসস (কোড 32) প্রতিস্থাপন করেছেন *:

hm9j9j9PPjzjzjgaAAA9JSJJ9RU9Sq9ReAA9JdJJJ9RfiJElK9JEiS*GtI*And*she*said***But*that*s*his***

Hexdump:

68 6D 09 6A 09 6A 09 50 50 6A 7A 6A 7A 6A 67 61
41 41 41 09 4A 53 4A 4A 09 52 55 09 53 71 09 52
65 41 41 09 4A 64 4A 4A 4A 09 52 66 69 4A 45 6C
4B 09 4A 45 69 53 20 47 74 49 20 41 6E 64 20 73
68 65 20 73 61 69 64 20 20 20 42 75 74 20 74 68
61 74 20 73 20 68 69 73 20 20 20

মেশিন কোড এক্সটেনশন সহ একটি ফাইলে উপস্থিত হয় .com। আমি যখন এটি চালনা করি তখন এটি প্রয়োজনীয় বার্তাটি মুদ্রণ করে এবং তারপরে হ্যাং হয়ে যায় (এলোমেলো ডেটা কার্যকর করে)।

এটি কী করে তা নিয়ে উচ্চ-স্তরের ব্যাখ্যা:

  1. ধ্রুবক মান সহ নিবন্ধগুলি সূচনা করে
  2. প্রয়োজনীয় বিশেষ প্রতীক ( ,'.$) দ্বারা বার্তায় স্পেসগুলি প্রতিস্থাপন করে
  3. int 21নির্দেশটি তৈরি করতে কোডটি প্যাচ করে , যা বার্তাটি মুদ্রণ করে
  4. ডস কল করুন

সমাবেশ কোড (এর সাথে সংকলন করা যেতে পারে tasm):

my_bp equ 7ah
my_si equ 7ah
my_di equ 67h
my_msg equ 13bh
    .model tiny
    .code
    .startup
    .186
    org 100h
    push 96dh   ; ax (ah = 0; al = don't care, but see below)
    push 9      ; cx
    push 9      ; dx
    push ax     ; bx = don't care
    push ax     ; don't care
    push my_bp
    push my_si
    push my_di
    popa
    inc cx
    inc cx
    inc cx
    or [bp+si+my_msg-my_bp-my_si+12], cx ; ,
    dec dx
    dec dx
    or [bp+si+my_msg-my_bp-my_si+14], dx ; '
    or [bp+di+my_msg-my_bp-my_di+23], dx ; '
    or [bp+si+my_msg-my_bp-my_si+30], dx ; '
    inc cx
    inc cx
    or [bp+si+my_msg-my_bp-my_si+29], cx ; .
    dec dx
    dec dx
    dec dx
    or [bp+si+my_msg-my_bp-my_si+31], dx ; $

    ; 0x2049 * 0x4b6c = 0x98301cc
    ; So this sets cx to 1cc (a temporary constant used to patch code)
    imul cx, [bp+si+my_msg-my_bp-my_si-2], 4b6ch
    ; 0x1cc | 0x2049 = 0x21cd (the instruction which calls DOS int 21)
    ; Here ah = 9 ("print" mode)
    or [bp+si+my_msg-my_bp-my_si-2], cx

    ; At address 101, there is the constant 96d, which was loaded into ax
    ; 0x96d * 0x7447 = 0x448013b
    ; So the following sets dx to 13b (adddress of the message)
    imul dx, [bp+di+101h-my_bp-my_di], 7447h

int21:
    dw 2049h

    db 'And she said   But that s his   '
    end

এটি popaসমস্ত রেজিস্টারগুলিকে পপ করার নির্দেশনাটি ব্যবহার করে , কারণ নিয়মিত popসমস্ত প্রয়োজনীয় রেজিস্টারগুলি পূরণ করতে পারে না (যেমন pop diএকটি নিষিদ্ধ অপকোড)।

প্যাচে বাইটের ঠিকানাগুলি 0x100 ... 0x160 এর মধ্যে রয়েছে। ভাগ্যক্রমে, তাদের অনুমোদিত মান সহ 3 বাইটের যোগফল হিসাবে প্রতিনিধিত্ব করা যেতে পারে:

  • 0x7a ইন bp
  • 0x7a বা 0x67 এ siবাdi
  • তাত্ক্ষণিক মান

বার্তায় বাইটস প্যাচিং OR0x20 (স্পেস ক্যারেক্টার) এবং একটি ছোট ধ্রুবক (4, 7, 12 বা 14) এ লজিক্যাল করে কাজ করে । ছোট ধ্রুবকটি প্রাথমিকভাবে cxএবং dx9 টি (ট্যাব চরিত্র) দ্বারা এবং প্রয়োজনীয়ভাবে INCবা করার দ্বারা প্রাপ্ত হয় DEC

কোড প্যাচিং IMULনির্দেশ ব্যবহার করে । ব্রুট-ফোর্স অনুসন্ধান ব্যবহার করে গুণ করার জন্য প্রয়োজনীয় 16-বিট ধ্রুবকগুলি পেয়েছি।

শেষ পর্যন্ত, বার্তার ঠিকানা (0x13b) গুণ দ্বারা প্রাপ্ত হয়। স্থান বাঁচাতে, আমি একটি নির্দেশিকা থেকে একটি ধ্রুবক নিয়েছি, যার মধ্যে একটি তাত্ক্ষণিক মান রয়েছে 0x96d। এখানে 9অংশটি একটি ডস প্রিন্ট ফাংশন চয়ন করে এবং 6dঅংশটি একটি নিখরচায় প্যারামিটার। দেখা যাচ্ছে যে 6dএকমাত্র সম্ভাবনা যা গুণনের পরে 0x13b দিতে পারে।

কোড অংশ বিযুক্ত করা:

06BA:0100 686D09            PUSH    096D
06BA:0103 6A09              PUSH    +09
06BA:0105 6A09              PUSH    +09
06BA:0107 50                PUSH    AX
06BA:0108 50                PUSH    AX
06BA:0109 6A7A              PUSH    +7A
06BA:010B 6A7A              PUSH    +7A
06BA:010D 6A67              PUSH    +67
06BA:010F 61                POPA
06BA:0110 41                INC     CX
06BA:0111 41                INC     CX
06BA:0112 41                INC     CX
06BA:0113 094A53            OR      [BP+SI+53],CX
06BA:0116 4A                DEC     DX
06BA:0117 4A                DEC     DX
06BA:0118 095255            OR      [BP+SI+55],DX
06BA:011B 095371            OR      [BP+DI+71],DX
06BA:011E 095265            OR      [BP+SI+65],DX
06BA:0121 41                INC     CX
06BA:0122 41                INC     CX
06BA:0123 094A64            OR      [BP+SI+64],CX
06BA:0126 4A                DEC     DX
06BA:0127 4A                DEC     DX
06BA:0128 4A                DEC     DX
06BA:0129 095266            OR      [BP+SI+66],DX
06BA:012C 694A456C4B        IMUL    CX,[BP+SI+45],4B6C
06BA:0131 094A45            OR      [BP+SI+45],CX
06BA:0134 6953204774        IMUL    DX,[BP+DI+20],7447
06BA:0139 CD21              INT     21 (after the code patches itself)

মজাদার ঘটনা: সাধারণত, আমি offset messageহার্ড- 13bhকোডডের পরিবর্তে ব্যবহার করতাম তবে এই ক্ষেত্রে, কারণ এর ঠিকানাটি বিশ্লেষণের সময় অজানা, তাসমুল 1 কোড বাইট নষ্ট করে 16-বিট তাত্ক্ষণিক অফসেট উত্পন্ন করে:

06BA:0131 098A4600          OR      [BP+SI+0046],CX
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.