Advertisement
dzocesrce

[APS] Card Trick

Aug 30th, 2023
498
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.85 KB | None | 0 0
  1. /*
  2. Перо прави трик со карти. Тој има шпил од 51-на карта (некој некогаш не му вратил една) од којшто ви дозволува да влечете карта. Тој, за трикот да биде веродостоен, не ја знае картата, но знае на која позиција се наоѓа. Мааната на Перо е тоа што тој не знае регуларно да измеша карти, туку ги зема првите седум карти, им им го превртува редоследот (пр. од 1 2 3 4 5 6 7 ги реди во 7 6 5 4 3 2 1), потоа зема една карта од превртените и една од врвот од шпилот и го става на крајот од шпилот, така се додека не ги потроши сите седум карти. Со тоа остварува едно мешање на шпил. Ваша задача е, да изработите симулцаија на ваквото мешање, такашто за дадена N-та карта т.ш. 1<=N<=51, вие ќе му изброите колку вакви мешања треба тој да направи за на врв на шпилот да дојде извлечената карта.
  3.  
  4. Input->Output
  5. 15->1
  6. 12->25
  7. 14->18
  8. */
  9. import java.util.Collection;
  10. import java.util.Iterator;
  11. import java.util.NoSuchElementException;
  12. import java.util.Queue;
  13. import java.util.Scanner;
  14. import java.util.*;
  15. import java.io.*;
  16. class ArrayQueue<E> implements Queue<E> {
  17.  
  18.     // Redicata e pretstavena na sledniot nacin:
  19.     // length go sodrzi brojot na elementi.
  20.     // Ako length > 0, togash elementite na redicata se zachuvani vo elems[front...rear-1]
  21.     // Ako rear > front, togash vo  elems[front...maxlength-1] i elems[0...rear-1]
  22.     E[] elems;
  23.     int length, front, rear;
  24.  
  25.     // Konstruktor ...
  26.  
  27.     @SuppressWarnings("unchecked")
  28.     public ArrayQueue (int maxlength) {
  29.         elems = (E[]) new Object[maxlength];
  30.         clear();
  31.     }
  32.  
  33.     public boolean isEmpty () {
  34.         // Vrakja true ako i samo ako redicata e prazena.
  35.         return (length == 0);
  36.     }
  37.  
  38.     public int size () {
  39.         // Ja vrakja dolzinata na redicata.
  40.         return length;
  41.     }
  42.  
  43.     public E peek () {
  44.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  45.         if (length > 0)
  46.             return elems[front];
  47.         else
  48.             throw new NoSuchElementException();
  49.     }
  50.  
  51.     public void clear () {
  52.         // Ja prazni redicata.
  53.         length = 0;
  54.         front = rear = 0;  // arbitrary
  55.     }
  56.  
  57.     public void enqueue (E x) {
  58.         // Go dodava x na kraj od redicata.
  59.         elems[rear++] = x;
  60.         if (rear == elems.length)  rear = 0;
  61.         length++;
  62.     }
  63.  
  64.     public E dequeue () {
  65.         // Go otstranuva i vrakja pochetniot element na redicata.
  66.         if (length > 0) {
  67.             E frontmost = elems[front];
  68.             elems[front++] = null;
  69.             if (front == elems.length)  front = 0;
  70.             length--;
  71.             return frontmost;
  72.         } else
  73.             throw new NoSuchElementException();
  74.     }
  75.  
  76.     @Override
  77.     public boolean addAll(Collection<? extends E> arg0) {
  78.         // TODO Auto-generated method stub
  79.         return false;
  80.     }
  81.  
  82.     @Override
  83.     public boolean contains(Object arg0) {
  84.         // TODO Auto-generated method stub
  85.         return false;
  86.     }
  87.  
  88.     @Override
  89.     public boolean containsAll(Collection<?> arg0) {
  90.         // TODO Auto-generated method stub
  91.         return false;
  92.     }
  93.  
  94.     @Override
  95.     public Iterator<E> iterator() {
  96.         // TODO Auto-generated method stub
  97.         return null;
  98.     }
  99.  
  100.     @Override
  101.     public boolean remove(Object arg0) {
  102.         // TODO Auto-generated method stub
  103.         return false;
  104.     }
  105.  
  106.     @Override
  107.     public boolean removeAll(Collection<?> arg0) {
  108.         // TODO Auto-generated method stub
  109.         return false;
  110.     }
  111.  
  112.     @Override
  113.     public boolean retainAll(Collection<?> arg0) {
  114.         // TODO Auto-generated method stub
  115.         return false;
  116.     }
  117.  
  118.     @Override
  119.     public Object[] toArray() {
  120.         // TODO Auto-generated method stub
  121.         return null;
  122.     }
  123.  
  124.     @Override
  125.     public <T> T[] toArray(T[] arg0) {
  126.         // TODO Auto-generated method stub
  127.         return null;
  128.     }
  129.  
  130.     @Override
  131.     public boolean add(E arg0) {
  132.         // TODO Auto-generated method stub
  133.         return false;
  134.     }
  135.  
  136.     @Override
  137.     public E element() {
  138.         // TODO Auto-generated method stub
  139.         return null;
  140.     }
  141.  
  142.     @Override
  143.     public boolean offer(E arg0) {
  144.         // TODO Auto-generated method stub
  145.         return false;
  146.     }
  147.  
  148.     @Override
  149.     public E poll() {
  150.         // TODO Auto-generated method stub
  151.         return null;
  152.     }
  153.  
  154.     @Override
  155.     public E remove() {
  156.         // TODO Auto-generated method stub
  157.         return null;
  158.     }
  159. }
  160. public class card_trick {
  161.     public static int count(int N){
  162.         // Vasiot kod tuka
  163.         ArrayQueue<Integer> deck= new ArrayQueue<>(51);
  164.         for(int i=0;i<51;i++){
  165.             deck.enqueue(i+1);
  166.         }
  167.         int counter=0;
  168.         Stack<Integer> stack= new Stack<Integer>();
  169.         while(deck.peek()!=N)
  170.         {
  171.             for(int i=0;i<7;i++) stack.push(deck.dequeue());
  172.             for(int i=0;i<7;i++){
  173.                 deck.enqueue(stack.pop());
  174.                 deck.enqueue(deck.dequeue());
  175.             }
  176.             counter++;
  177.         }
  178.         return counter;
  179.  
  180.     }
  181.  
  182.     public static void main(String[] args) throws NumberFormatException, IOException {
  183.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in) );
  184.         System.out.println(count(Integer.parseInt(br.readLine())));
  185.     }
  186.  
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement