নির্বাচন হ্যাক


46

আপনি একজন পেশাদার হ্যাকার এবং আপনার বস সবেমাত্র আপনাকে একটি প্রার্থীকে একটি আসন্ন নির্বাচনে জিততে সহায়তা করার আদেশ দিয়েছে। আপনার কাজ হ'ল প্রার্থীর ফলাফল বাড়াতে ভোটদান মেশিনের ডেটা পরিবর্তন করা।

ভোটিং মেশিনগুলি ভোট প্রদানের ফলাফলকে দুটি পূর্ণসংখ্যা হিসাবে সংরক্ষণ করে: আপনার প্রার্থীর ভোটের সংখ্যা ( v1) এবং তাদের প্রতিপক্ষের ভোটের সংখ্যা ( v2)।

গবেষণার সপ্তাহ পরে, আপনি সিস্টেম একটি নিরাপত্তা গর্ত পাওয়া যায় এবং আপনি এর মান বৃদ্ধি করতে পারেন v1একটি পূর্ণসংখ্যা দ্বারা x, এবং মান হ্রাস v2একই দ্বারা x। তবে একটি বাধা আছে, আপনাকে সুরক্ষা হ্যাশ কোডটি অবিচ্ছিন্ন রাখতে হবে:

  • সুরক্ষা হ্যাশ কোড: (v1 + v2*2) modulo 7

এছাড়াও, এর মানটি xঅবশ্যই ন্যূনতম হওয়া উচিত যাতে আপনার পরিবর্তনগুলি নজরে না যায়।

আপনার প্রোগ্রামটি ইনপুট হিসাবে গ্রহণ করতে হবে v1এবং v2; এটি xযাতে সর্বোত্তম মান আউটপুট করা উচিত v1>v2

কিছু ক্ষেত্রে রয়েছে যার জন্য আপনি ফলাফল হ্যাক করতে পারবেন না; আপনাকে এগুলি পরিচালনা করতে হবে না (এটি আপনার বসের সাথে সমস্যার সৃষ্টি করতে পারে তবে এটি অন্য গল্প)।

পরীক্ষার মামলা

100,123 --> 14
47,23 --> 0
40,80 --> 21
62,62 --> 7
1134,2145 --> 511

4
মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
ডেনিস

11
এছাড়াও, নিকটতম ভোটারদের কাছে: এটি পুরোপুরি অন-টপিক। আপনি যদি এটি পছন্দ না করেন তবে আপনি এটি ডাউনওয়েট করতে পারেন।
আর

10
কি নিরাপদ হ্যাশ ফাংশন!
ক্রুঙ্কার

আপনি কি ইনপুটগুলি .0(লাইক 100.0 123.0) অনুসরণ করতে পারবেন ?
ফল দিন এ ফলসিং

উত্তর:


21

পাইথন 2, 30 বাইট

lambda u,t:max(0,(t-u)/14*7+7)

uআমাদের ভোট, tতাদের ভোট হয়।


3
(t-u)/14*7ঠিক হতে পারে না (t-u)/2?
কনর ও'ব্রায়ান

2
ওহ, অপেক্ষা করুন, কিছুই নয়, পাই 2 পূর্ণসংখ্যা বিভাগ করে
কনর ও'ব্রায়ান

@ কনরও'ব্রায়ান নাপ বিবেচনা করুন t-u == 16। তারপরে
16/14

@ অরલ્પ আমি কোনটি জিজ্ঞাসা করব জানি না, তাই আমি আপনার উভয়কেই জিজ্ঞাসা করব, আপনি কি দয়া করে আমাকে এটি ব্যাখ্যা করতে পারেন? y<x?0:(y-x)/2-(y-x)/2%7+7;, আমি ভেবেছিলাম যে পার্থক্যটি এটি অর্ধেকে বিভক্ত করা উচিত এবং তারপরে 7. এর নিকটতম একাধিকটি খুঁজে বের করুন আপনি কীভাবে এখানে পৌঁছেছেন?
ওয়েড টাইলার

1
একই সমাধানটি উপরে
ব্যবহারকারীর

20

পাইথন 2, 30 বাইট

lambda a,b:max((b-a)/14*7+7,0)

3
@ অরলপ হ্যাঁ, আমি মনে করি এটি কেবল লেখার উপায় way যদি না পুনরাবৃত্তির সমাধান সংক্ষিপ্ত হয় তবে আমি সন্দেহ করি।
xnor

1
@ এক্সনর আমি কোনটি জিজ্ঞাসা করব জানি না, তাই আমি আপনার দুজনকেই জিজ্ঞাসা করব, আপনি কি দয়া করে আমাকে এটি ব্যাখ্যা করতে পারেন? y<x?0:(y-x)/2-(y-x)/2%7+7;, আমি ভেবেছিলাম যে পার্থক্যটি এটি অর্ধেকে বিভক্ত করা উচিত এবং তারপরে 7. এর নিকটতম একাধিকটি খুঁজে বের করুন আপনি কীভাবে এখানে পৌঁছেছেন?
ওয়েড টাইলার

2
@ ওয়েডটাইলার আমরা 7 টির মধ্যে সবচেয়ে ছোট একাধিকটি খুঁজছি যা পার্থক্যের চেয়ে অর্ধেকের চেয়ে বেশি strictly এটি থেকে সন্ধান করতে (b-a)/2, আমরা /7*7নিকটতম 7 এর একাধিকটি ডাউন রাউন্ডগুলি করতে এবং তারপরে +7পরবর্তীটিতে যেতে চাই। এটি হ'ল যদি না আমরা একটি নেতিবাচক সংখ্যা পাই, তবে এই ক্ষেত্রে আমরা যেভাবেই জিতে যাব ঠিক 0 করতে পারি। এর সাথে 0 গ্রহণ করা এটি maxঅর্জন করে। এটির কিছুটি কেবল প্রকাশটি টুইট করে যা পরীক্ষা করে দেখেছে তাতে কী কাজ করে।
xnor

2
@ ওয়েডটাইলার এটি /7*7হ'ল এক ধরণের অভিব্যক্তি যা গল্ফ করার ক্ষেত্রে প্রায়শই যথেষ্ট প্রদর্শিত হয় যা আমি এটিকে একটি প্রতিমা হিসাবে মনে করি। ধারণাটি হ'ল n/7মেঝেতে নেমে আসে n/7, অর্থাত্ পুরো সম্পূর্ণ 7গুণকটির মধ্যে কতটা ফিট n। তারপরে, গুণিত করে 7এটি সংখ্যার একাধিকতে নিয়ে আসে 7
xnor

1
@ জ্যাকআ্যামমো উদাহরণটি দেয় -2/7*7, এবং যেহেতু পাইথন ফ্লোর-বিভাগটি নেতিবাচক অনন্তের দিকে ঘুরছে , 2/7এটি -1, তাই 7*-7+10। সুতরাং, উভয় পক্ষই 0 দেয়, যা সূক্ষ্মভাবে কার্যকর হয় works
xnor

13

গণিত, 22 বাইট

0//.x_/;2x<=#2-#:>x+7&

আর্গুমেন্ট #এবং সঙ্গে বিশুদ্ধ ফাংশন #2। যদি তাত্পর্য বেশি হয় তবে সর্বোচ্চ পুনরাবৃত্তির গভীরতা হিট করে 7*2^16 = 458752

ব্যাখ্যা

0                       Starting with 0,
 //.                    repeatedly apply the following rule until there is no change:
    x_                    if you see an expression x
      /;                    such that
        2x<=#2-#            2x <= #2-# (equivalently, #+x <= #2-x)
                :>        then replace it with
                  x+7       x+7 (hash is preserved only by multiples of 7)
                     &  End the function definition

4
আপনি কি এই সমস্ত জন্য একটি ব্যাখ্যা যোগ করতে পারেন?
পাভেল

@ পাভেল সম্ভবত আপনার মন্তব্যটি আপত্তি পেয়েছে কারণ আমার ব্যাখ্যাটি অস্পষ্ট ছিল?
নেজেনিসিস

আমি ভেবেছিলাম এটি ঠিক আছে, তবে আবার আমি ম্যাথমেটিকাকেও জানি।
পাভেল

@ পাভেল ভাল এখন এটি আরও ভাল :)
নেজিনিসিস


6

আসলে , 13 বাইট

7;;τ((-\*+0kM

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

max((b-a)/14*7+7,0)Xnor এবং orlp ব্যবহার করে একই সূত্র ব্যবহার করে।

ব্যাখ্যা:

7;;τ((-\*+0kM
7;;            3 copies of 7
   τ           double one of them
    ((-        bring the inputs back to the top, take their difference
       \*+     integer divide by 14, multiply by 7, add 7
          0kM  maximum of that and 0

5
আসলে , এটি দুর্দান্ত উত্তর
ট্রোজানবাইসিসিডেন্ট

আমার মনে হচ্ছে এই ভাষার নামটি পাঞ্চলাইনগুলির মতো সাবমিশন শিরোনাম শোনার জন্য উদ্দেশ্যমূলক ছিল: "বন্ধুরা, আসলে এটি 13 বাইট! আসুন!"
প্যাট্রিক রবার্টস

@ পেট্রিকরবার্টস আসলে, এটি সঠিক।
মেগো

6

গ্রোভি, 41 37 বাইট

{x,y->[Math.floor((y-x)/14)*7+7,0].max()}

এটি একটি নামবিহীন বন্ধ। ধন্যবাদ xnorএবং orlpসূত্র এবং James holdernessএকটি বাগ ইশারা জন্য।

পূর্ববর্তী সমাধানটি intdiv()পূর্ণসংখ্যা বিভাগের জন্য ব্যবহৃত হয়েছিল তবে এটি //পাইথনের ব্যবহৃত থেকে আলাদা আচরণ করে ।

এখানে চেষ্টা করুন!


5

হাস্কেল, 30 24 বাইট

a#b=max 0$div(b-a)14*7+7

একজন ইনফিক্স অপারেটর প্রথমে আপনার পছন্দসই প্রার্থীর ভোটের সংখ্যা নিচ্ছেন। রাউন্ডিংয়ের অন্যান্য উত্তরগুলির মতো একই যুক্তি ব্যবহার করে /14*7+7


2
শর্ত পূরণ করে এমন প্রথম মান সন্ধান করা এর জন্য ভাল ব্যবহার until: a#b=until(\c->a+c>b-c)(+7)0বা আরও ভাল a%b=until(>(b-a)/2)(+7)0। যদিও একটি গাণিতিক সূত্রটি এখনও সম্ভবত সংক্ষিপ্ত।
xnor

1
নোট করুন যে এক্সনরের সংক্ষিপ্ত বিকল্পগুলি ছাড়াও head[...]প্রায় সর্বদা সংক্ষিপ্ত করা যায়[...]!!0
লাইকনি

@ এক্সনর: আপনার সমাধান অবধি ফিরে না আসা পর্যন্ত Fractional aআমি নিশ্চিত নই যে এটি গৃহীত হয়েছে কিনা। সঙ্গে divযদিও খাটো, তাই ধন্যবাদ! অবশেষে গাণিতিক পদ্ধতির ব্যবহার করা হয়েছিল - এবং প্রকৃতপক্ষে এটি ছিল আরও দুটি বাইট যা ছিল তার চেয়ে কম। @ লাইকনি: দুর্দান্ত গল্ফিং, এটি সম্পর্কে জানতেন না, এটি মনে রাখবেন।
রেঞ্জি

4

জে, 15 বাইট

0>.7+7*14<.@%~-

কিন্ডা আকর্ষণীয়, আমি একটি সমস্যা নিয়ে কাজ করছিলাম এবং আমি ভেবেছিলাম আমার একটি সমাধান আছে তবে এটি প্রমাণিত হয়েছে যে আমি ভুল ছিল। আচ্ছা ভালো. এটি অনলাইন চেষ্টা করুন! ফলাফল এখানে:

   f =: 0>.7+7*14<.@%~-
   tests =: 123 100 ; 23 47 ; 80 40 ; 62 62 ; 2145 1134
   (,. f/ each) tests
┌─────────┬───┐
│123 100  │14 │
├─────────┼───┤
│23 47    │0  │
├─────────┼───┤
│80 40    │21 │
├─────────┼───┤
│62 62    │7  │
├─────────┼───┤
│2145 1134│511│
└─────────┴───┘

ভবিষ্যতে, দয়া করে TIO.run/nexus ব্যবহার করুন
পাভেল

@ পাভেল নং, টিও.আরুন ভি 2, নেক্সাস কেবল ভি 1 সামঞ্জস্যের জন্য রয়েছে
এএসসিআইআই-

@ এএসসিআইআই-কেবলমাত্র টিও.আরুনের নীচে একটি অস্বীকৃতি রয়েছে যা ভবিষ্যতে সমস্ত উত্পন্ন পারমালিক্স ভেঙে যেতে পারে। আমি মনে করি আমার এটি আরও বিশিষ্ট করা উচিত। পরীক্ষার উদ্দেশ্যে ব্যতীত, কেউই তার মুহুর্তে ভি 2 ব্যবহার করা উচিত নয়।
ডেনিস

@ ডেনিস ওহ, আমি জানতাম না! Asap সম্পাদনা করবে।
কনর ও'ব্রায়ান

4

সিজেম, 13 12 15 বাইট

  • মার্টিন ইন্ডারকে একটি বাইট ধন্যবাদ সংরক্ষণ করা।
  • মার্টিন ইন্ডারকে ধন্যবাদ 3 বাইট যোগ করা হয়েছে।
  • ইটিএইচ প্রডাকশনগুলির ]জন্য [ধন্যবাদ পরিবর্তিত হয়েছে ।

q~\-Ed/m[)7*0e>

অস্পষ্টভাবে orlp এবং xnor এর পদ্ধতিগুলি চুরি করেছে।

ইনপুট হল দুটি সংখ্যাকে একটি স্থান দ্বারা পৃথক করা: 100 123

ব্যাখ্যা:

q~\-Ed/m])7*0e>
q~\-            e# Input two numbers, swap and subtract them.
    E           e# Push 0xE (15)
     d/m]       e# Float divide and take the floor.
         )7*    e# Increment and multiply by 7.
            0e> e# Max of this and 0.

Dশুধুমাত্র হয় 13। এবং আপনি পরে 7 যোগ করার পরিবর্তে গুণনের আগে মান বাড়িয়ে একটি বাইট সংরক্ষণ করতে পারেন।
মার্টিন এেন্ডার

@ জেমসহোল্ডারেন্স বিষয়টি হ'ল পাইথনের পূর্ণসংখ্যা বিভাগ ইনফের দিকে রাউন্ডে কাজ করে যেখানে সিজেমের রাউন্ডগুলি শূন্যের দিকে যায়।
মার্টিন এন্ডার

আমার ভুল বোঝাবুঝি হতে পারে তবে আমি ভেবেছিলাম m]সিল; m[মেঝে হয়।
ইটিএইচ প্রডাকশনগুলি

@ETH প্রোডাকশন আপনি ঠিক, সম্পাদিত।
এফসোলিং ফল

4

এক্সেল ভিবিএ, 24 20 বাইট

Immediates উইন্ডোতে ফাংশন যা কোষ থেকে ইনপুট নেয় A1এবং B1VBE immediates উইন্ডোতে এবং আউটপুট।

?Int([A1-B1]/14)*7+7

সাব্রোটিন সংস্করণ, 43 বাইট

b, cবৈকল্পিক \ পূর্ণসংখ্যা হিসাবে ইনপুট নেয় এবং ভিবিই ইমিডিয়েট উইন্ডোতে মুদ্রণ করে

Sub a(b,c):Debug.?Int((c-b)/14)*7+7:End Sub


3

পিএইচপি, 41 39 বাইট

    <?=7*max(0,1+($argv[2]-$argv[1])/14|0);

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; সাথে চালানো -r

$ A> $ বি হ্যান্ডেল করার জন্য 7 5 অতিরিক্ত বাইট: - /


3

জাপট , 14 বাইট

V-U /2+7 f7 w0

এখানে চালান!

3 বাইট শেভ করার জন্য আপনাকে ETH প্রডাকশন ধন্যবাদ!


1
খুব সুন্দর. fএকটি সংখ্যার একাধিকটিতে একটি যুক্তি এবং তলগুলি গ্রহণ করে, তাই আমি মনে করি আপনি V-U /2+7 f7 w0তিনটি বাইট সংরক্ষণ করতে পারবেন ।
ETH প্রোডাকশনগুলি 11:58

3

05 এ বি 1 ই , 9 বাইট

-14÷>7*0M

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

ব্যাখ্যা

-          # push difference of inputs
 14÷       # integer divide by 14
    >      # increment
     7*    # times 7
       0   # push 0
        M  # take max

বা একই বাইট-কাউন্টের সাথে একটি নম্বর-জুড়ে অপারেটিং সহ সম্পর্কিত ফাংশন

Î¥14÷>7*M

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


2

ডায়ালগ এপিএল , 14 বাইট

লাগে v1অধিকার আর্গুমেন্ট হিসাবে এবং v2বাম আর্গুমেন্ট হিসাবে।

07×1+(⌊14÷⍨-)

0 ⌈ সর্বোচ্চ শূন্য এবং

7 × সাতবার

1 + (... ) এক প্লাস ...

 মেঝে

14 ÷⍨ একটি চৌদ্দতম

- পার্থক্য (যুক্তিগুলির মধ্যে)

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


2

বেফুঞ্জ, 19 বাইট

777+:&&\-+\/*:0`*.@

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

এটি orlp এবং xnor দ্বারা ব্যবহৃত যেটির থেকে কিছুটা আলাদা সূত্রের উপর নির্ভর করে, যেহেতু বেফঞ্জ রেফারেন্স ইন্টারপ্রেটারের পাইথনের বিভিন্ন বৃত্তাকার নিয়ম রয়েছে। বেফুঞ্জের maxঅপারেশনের বিলাসিতাও নেই ।

প্রাথমিক গণনাটি এরকম দেখাচ্ছে:

x = (v2 - v1 + 14)/14*7
x = x * (x > 0)

আরও বিশদে কোড পরীক্ষা করা:

7                     Push 7                                      [7]
 77+:                 Push 14 twice.                              [7,14,14]
     &&               Read v1 and v2 from stdin.                  [7,14,14,v1,v2]
       \-             Swap the values and subtract.               [7,14,14,v2-v1]
         +            Add the 14 that was pushed earlier.         [7,14,14+v2-v1]
          \/          Swap the second 14 to the top and divide.   [7,(14+v2-v1)/14]
            *         Multiply by the 7 that was pushed earlier.  [7*(14+v2-v1)/14 => x]
             :        Make a copy of the result                   [x,x]
              0`      Test if it's greater than 0.                [x,x>0]
                *     Multiply this with the original result.     [x*(x>0)]
                 .@   Output and exit.



2

জাভা 8, 31 বাইট

(a,b)->b<a?0:(a=(b-a)/2)+7-a%7;

এটি ল্যাম্বডা এক্সপ্রেশনটি নির্ধারিত হয় IntBinaryOperator

ক আপনার প্রার্থীর ভোট, খ আপনার প্রতিপক্ষের।

জাভাটি ধনাত্মক পূর্ণসংখ্যার সাথে বিভাগের জন্য গোলাকার হয়, সুতরাং +7-a%77 এর পরবর্তী একাধিকের মানটি ধাবিত করতে ব্যবহৃত হয়।


a->b->(b=(b-a)/14*7+7)>0?b:03 বাইট সংক্ষিপ্ত, তবে আমি আপনার পদ্ধতির বেশি পছন্দ করি, তাই আমার কাছ থেকে +1 করুন। প্রদত্ত প্রায় প্রতিটি উত্তর ইতিমধ্যে ব্যবহার করেছে max((b-a)/14*7+7,0)..
কেভিন ক্রুইজসেন

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

a->b->(b=(b-a)/14*7+7)>0?b:0সরাসরি ফলাফলও ফেরত দেয়: এখানে চেষ্টা করে দেখুন। বা আপনার অর্থ কী আপনি লাম্বদাদের তরকারী থেকে উপরে একক পদ্ধতিতে লাম্বদা পছন্দ করেন; (a,b)->অগ্রাধিকার a->b->, এটি দীর্ঘ যদিও?
কেভিন ক্রুজসেন

কারিগরি করার চেয়ে একক পদ্ধতি, তবে এটি কেবলমাত্র একটি ব্যক্তিগত পছন্দ
জ্যাক আম্মো

1

রুবি, 26 27 বাইট

->a,b{[(b-a)/14*7+7,0].max}

মূলত xnor এবং orlp এর পাইথন দ্রবণের মতোই একটি পাক দিয়ে (7 টি যুক্ত করার দরকার নেই, নেতিবাচক মডুলোর কারণে রুবিতে 1 বাইট সংরক্ষণ করে, পাইথন সম্পর্কে জানেন না)

কোনও মোড় নেই, মোড়টি ছিল জ্ঞানীয় অনিয়মের একটি খারাপ ঘটনা। ভুলে যাও. সত্যিই। :-)


1

স্কালা, 31 বাইট

(a,b)=>Math.max((b-a)/14*7+7,0)

টেরিনারি সংস্করণটি 2 বাইট দীর্ঘ


1

নুডেল , 16 বাইট

⁻÷14ɲL×7⁺7ḋɲl⁺÷2

থেকে সমীকরণ টানা XOR এবং orlp উত্তর, কিন্তু যেহেতু Noodel নেই একটি সর্বোচ্চ সামর্থ্য প্রায় কাজ ছিল।

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

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

⁻÷14ɲL×7⁺7       # The equation...
⁻                # v2 - v1
 ÷14             # Pops off the difference, then pushes on the (v2 - v1)/14
    ɲL           # Applies lowercase which for numbers is the floor function.
      ×7         # Multiplies that by seven.
        ⁺7       # Then increments it by seven.

          ḋɲl⁺÷2 # To relate with the other answers, this takes the max between the value and zero.
          ḋ      # Duplicates what is on the top of the stack (which is the value just calculated).
           ɲl    # Pops off the number and pushes on the magnitude (abs value).
             ⁺   # Add the abs to itself producing zero if the number came out negative (which means we are already winning).
              ÷2 # Divides the result by two, which will either be zero or the correct offset.

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