আপনি একটি কালি পাতায় কি দেখতে পান? রোরস্যাচ প্রজন্ম '[বন্ধ]


12

সুতরাং আমি চাই আপনি নীচের চিত্রের মতো রোরশাচ চিত্রগুলি তৈরি করার চেষ্টা করুন:

ভুয়া রোরশাচ ছবি

আরও অনুপ্রেরণার একটি লিঙ্ক এখানে ।

এটি একটি জনপ্রিয়তা প্রতিযোগিতা, তবে আমি বলব যে কালো এবং সাদা, পাশাপাশি টেক্সচারের চেয়েও রঙগুলি বেশি জনপ্রিয় হতে পারে।

Rorschach চিত্রগুলি কালি দিয়ে কাগজ ভাঁজ করে তৈরি করা হয় যাতে একটি মানদণ্ড প্রতিসাম্য।

এএসসিআইআই শিল্পটি বৈধ, তবে উপরের মত একই মানদণ্ডের সাপেক্ষে।


1
তাহলে এটি কোনটি, কোড-গল্ফ, বা জনপ্রিয়তা-প্রতিযোগিতা?
ডেভিড উইলকিনস

2
<উদ্ধৃতি রিচার্ড ফেনম্যান> এখানে অর্থহীন কালিমা রয়েছে, এবং অন্যরা আপনাকে যা দেখে মনে হয় আপনাকে জিজ্ঞাসা করে, কিন্তু আপনি যখন তাদের বলবেন, তারা আপনার সাথে তর্ক শুরু করে! </
quot

2
ইতিমধ্যে এখানে :) mathematica.stackexchange.com/a/4224/193
ডঃ belisarius

1
আমি এর জন্য একটি স্টেরিওগ্রামটি দেখতে পছন্দ করব ।
জাস্টিন

1
এটি আমাকে সম্প্রতি যে ছবিটি দেখেছিল তা মনে করিয়ে দিয়েছে
VX

উত্তর:


11

ফরট্রান 95

এই কোডটি এক প্রকারের বড়, তবে এটি এএসসিআই ফলাফলের একটি দুর্দান্ত ফলাফল দেয়:

program Rorschach
implicit none

integer :: i, j, k, l, N, seed
integer, dimension (24) :: i_zero, j_zero
real :: aux
integer, dimension (17,12) :: matrix_I = 0
character, dimension (17,12) :: matrix_C

! random seed according to system clock
call SYSTEM_CLOCK(count=k)
call RANDOM_SEED(size=N)
allocate(seed(N))
seed=k+37*(/ (i - 1, i = 1, n) /)
call RANDOM_SEED(PUT=seed)

! generating 7 random points
do i=1,7
  call RANDOM_NUMBER(aux)
  i_zero(i) = 15 * aux + 2 ! range = 2-16
  call RANDOM_NUMBER(aux)
  j_zero(i) = 11 * aux + 2 ! range = 2-12
enddo

! generating 7 large spots of ink
do i=1,7
  matrix_I(i_zero(i),j_zero(i)) = 3 ! central points have ink value 3
  do k=-1,1
    do l=-1,1
      if (.NOT.((k==0) .AND. (l==0))) then ! immediate neighbours...
        if ( (((i_zero(i)+k)<=17).OR.((i_zero(i)+k)>0)) .AND. (((j_zero(i)+l)<=12).OR.((j_zero(i)+l)>0)) ) then ! ... that are inside the designed area ...
            if (matrix_I(i_zero(i)+k,j_zero(i)+l) < 2) matrix_I(i_zero(i)+k,j_zero(i)+l) = 2 ! ... and that do not have ink value larger than 2 will be attributed as 2
        endif
      endif
    enddo
  enddo
enddo

! generating N little sparkles of ink
call RANDOM_NUMBER(aux)
N = int(11 * aux) + 20 ! N = 20-30

i = 0
do while (i <= N)
  call RANDOM_NUMBER(aux)
  i_zero(i) = 16 * aux + 1 ! range = 1-17
  call RANDOM_NUMBER(aux)
  j_zero(i) = 11 * aux + 1 ! range = 1-12
  if (matrix_I(i_zero(i),j_zero(i)) < 1) then ! if the selected point already has more ink than 1, then cycle the loop
    matrix_I(i_zero(i),j_zero(i)) = 1
    else
      cycle
  endif
  i = i + 1
enddo

! converting matrix of integers into matrix of characters
do i=1,17
  do j=1,12
    select case(matrix_I(i,j))
      case(0)
      matrix_C(i,j) = " "
      case(1)
      matrix_C(i,j) = "."
      case(2)
      matrix_C(i,j) = "+"
      case(3)
      matrix_C(i,j) = "@"      
    end select
  enddo
enddo

! printing it on the screen + its reflection
do i=1,17
  do j=1,12
    write(*,"(A1)",advance="NO") matrix_C(i,j)
  enddo
  do j=12,2,-1
    write(*,"(A1)",advance="NO") matrix_C(i,j)
  enddo
  write(*,"(A1)") matrix_C(i,1)
enddo

end program Rorschach

কোডটি সম্পূর্ণরূপে মন্তব্য করা হয়েছে, তবে মূল ধারণাটি হল যে এটি 0 এবং 3 এর মধ্যে মান সহ একটি ম্যাট্রিক্স উত্পন্ন করে, সেই জায়গাতে কালি পরিমাণের প্রতিনিধিত্ব করে। এখানে কালি 7 টি বড় দাগ (মান 2 দিয়ে ঘেরা মানের সাথে একটি স্পট) এবং প্রচুর "স্পার্কলস" (মান 1) রয়েছে। এই ম্যাট্রিক্সটি নিম্নলিখিত রূপান্তরটি ব্যবহার করে একটি অক্ষর ম্যাট্রিক্সে রূপান্তরিত হবে:

0 =  
1 = .
2 = +
3 = @

এখানে একটি ফলাফল:

 +++      .  .      +++ 
 +@++++   .  .   ++++@+ 
 ++++@+.        .+@++++ 
   .+++   ++++   +++.   
          +@@+          
. .   . +++@@+++ .   . .
.       +@++++@+       .
     ++++++  ++++++     
     +@+        +@+     
.    ++++      ++++    .
   .  +@+      +@+  .   
  .  .+++.    .+++.  .  
 . .   .        .   . . 
    .    .    .    .    
   .   ..      ..   .   
 .                    . 

1
ফোরট্রান! একটি ব্যক্তিগত প্রিয়।
পিওরফেরেট

2
ধন্যবাদ! সাধারণত ফোর্টরান + শিক্ষানবিশ কোডটি এখানে সুযোগের পক্ষে দাঁড়ায় না, তবে ছেলে, আমি এই সাইটে অংশ নেওয়া শুরু করার পর থেকেই আমি প্রোগ্রামিং সম্পর্কে অনেক কিছু শিখছি!
gilbertohasnofb

1
ফরটারান আমার চোখে তালিকার রাজা এবং এটি কেবলমাত্র তালিকাগুলি যাতে আপনি কীভাবে ভুল হতে পারেন তা আমি দেখতে পাই না।
পিওরফেরেট

1
ফোরট্রান ব্রিভিটির পক্ষে তেমন গরম নয়, তবে কার্য সম্পাদন চলছে point
জোনাথন ভ্যান মাত্রে

12

পাইথন

বেশিরভাগ সেরা বা স্মুটেস্ট নয়, তবে এখানে একটি অজগর সমাধান রয়েছে:

from PIL import Image
import random
import sys

imgsize = (int(sys.argv[1]), int(sys.argv[2]))
color = (0, 0, 0)
img = Image.new("RGB", imgsize, "white")

for j in range(0,int(sys.argv[3])):
    start = (random.randrange(0, imgsize[0]/2), random.randrange(0, imgsize[1]))
    point = start
    img.putpixel(point, color)

    blotsize = random.randrange(0, int(sys.argv[4]))
    for i in range(blotsize):
        directions = [(point[0], point[1]+1), (point[0], point[1]-1), (point[0]+1, point[1]), (point[0]-1, point[1])]
        toremove = []
        for direction in directions:
            if direction[0]>=(imgsize[0]/2) or direction[1]>=imgsize[1] or direction[0]<0 or direction[1]<0:
                toremove.append(direction)
        for d in toremove:
            directions.remove(d)
        point = random.choice(directions)
        img.putpixel(point, color)

cropped = img.crop((0, 0, imgsize[0]/2, imgsize[1]))
img = img.transpose(Image.FLIP_LEFT_RIGHT)
img.paste(cropped, (0, 0, imgsize[0]/2, imgsize[1]))

img.save("blot.png")

এটি কেবল একটি দাগের জন্য "ঘোরাঘুরির পথ" তৈরি করে এবং এর মধ্যে বেশ কয়েকটি তৈরি করে।

একটি উদাহরণ ব্যবহার:

py inkblot.py width height blots blotsize
py inkblot.py 512 512 20 10000

এবং কিছু উদাহরণ চিত্র: blot1 blot2


পিপিসিজিতে আপনাকে স্বাগতম! আমরা পোস্টারগুলিকে তারা যে ভাষা ব্যবহার করেছিল তা নির্দেশ করে বিশিষ্ট শিরোনাম তৈরি করতে উত্সাহিত করি। আপনি সম্পাদকীয় হিসাবে মার্কডাউন সিনট্যাক্স ব্যবহার করতে পারেন, উদাহরণস্বরূপ## Python
জোনাথন ভ্যান মাত্রে

5
সম্ভবত একক পিক্সেলের পরিবর্তে আপনি (এলোমেলো আকারের) ডিস্ক ব্যবহার করতে পারেন।
হাওয়ার্ড

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